I have so many mixed feelings about point-free styles of programming or reasoning that I keep returning to. On the one hand, point-free style can be an extremely concise, elegant, and at times incisive way to write down an idea. On the other hand, if you've ever tried to write APL for instance, it can be challenging to get right; and if you've ever tried to
read someone else's APL, it can be mind-breaking. It's a serious question whether one should bother expressing things in this style and take the risk that it won't be read or received by many other people.
I have my own offering in this area: S↾⋄∂/∂ . This is a relation between candidate solutions of a coevolutionary algorithm where ∂ is the solution concept (
https://bucci.onl/notes/solution-concepts ) and S is a set candidate solutions. Given a candidate solution s, this relation indicates all the actual solutions that lie "above" it according to the solution concept. ↾ is the shrink operator, and / is right residual. I've written a paper spelling out the ⋄∂/∂ part of that expression, though I didn't use these terms or symbols at the time, that weighed in around 6 pages. In
https://bucci.onl/notes/monotonic-solution-concepts , I touch on this paper and subject; the weak preference order described there is captured by ⋄∂/∂ .
A concise description of what shrink and right residual do, and why this expression is doing what I claim it does, would require roughly the same amount of space, maybe a bit less. Mu and Oliveira have written a few papers on the shrink operator; right residual is textbook relational algebra.
So the six symbols in S↾⋄∂/∂ are condensing many tens of pages of natural language + math. In principle, once you knew ∂, ⋄,↾, and /, you should be able to deduce what that full expression does. Following Mu and Oliveira, you should also be able to deduce an algorithmic implementation! But who the heck would put themselves through all that besides me? Who knows! 🤷
#APL #PointFree #programming #CoevolutionaryAlgorithm #RelationalAlgebra