* [1]: http://www.jeffreykegler.com/Home/perl-and-undecidability
* [2]: https://programmingisterrible.com/post/42432568185/how-to-pa...
IF x THEN y = z; ELSE = w;
Here, the parser can’t know that ELSE is a variable until it sees the second equal sign. For a more involved example, take a look at http://multicians.org/proc-proc.html(the idea that one cannot expect programmers to know all keywords isn’t a bad one; http://www.cs.vu.nl/grammarware/browsable/os-pli-v2r3/, which claims to be incomplete, has 310 keywords. Drawing the conclusion that one should not have reserved words _is_ a bad idea)
like().writing(all.their.code()).like(*this)
In which case, the programmer doesn't have to memorize keywords, but they do have to memorize these obscure, unpredictable, and noncommunicable features of where to properly put their dots and parens. Which is far worse, in my opinion.It has nothing to do with language keywords, it is just too far away from operational behavior to be very readable or debuggable.
https://en.wikipedia.org/wiki/Tacit_programming
However, there seems to be a key difference. Under "fluent interface", it looks like the object context is pointlessly being chained and the operations are just side-effecting on it, whereas "point free" programming implements a transformation pipeline by chaining side-effect-free operations.
E.g.
turtle.rotate(90).pen_down().forward(5);
Kind of thing which isn't a pipeline at all, and could be written: turtle.rotate(90);
turtle.pen_down();
turtle.forward(5);
and arguably should.For example this Perl 6 code:
with turtle { # store in topic variable $_ (if it's defined)
.rotate(90); # implicit method call on $_
.pen_down();
.forward(5);
}