Рет қаралды 28,721
Tacit programming, or programming in the “point-free” style, allows you to define a function without reference to one or more of its arguments. Thanks to automatic currying, point-free definitions can be easy to write in Haskell, OCaml, and F#.
But is point-free syntax just point-less? Ostensibly, tacit definitions can calibrate your code to the appropriate level of abstraction. But which level is most appropriate? When is a point-free definition better than its “pointed” variation? And when is it spectacularly worse?
Let's be explicit about tacit programming. Let's learn eta-reduction to produce it. Let's develop our intuition for its expressive power. Let's hunt for it in trusted libraries. Let's probe its origins in John Backus' function-level programming. Let's see it amplified in Joy and J, languages designed for maximum quiet. Let's speak at length, about the unspoken.