
G'day all.
Quoting Steve Downey
from what you just told me, it's not an artifact of the pf style, but that maximally reusable functions will be expressible in a pointsfree style.
Not necessarily. (There's a fairly obvious reductio ad absurdum argument as to why: at least the primitives like "map" and "foldr" need to be expressed in a pointed way!) Pointsfree functions are not necessarily maximally reusable, but they're usually maximally refactorable. As an example, the associative law for monads looks like this in pointed style: (m >>= k1) >>= k2 = m >>= (\x -> k1 x >>= k2) Applying this law from left to right requires introducing a fresh variable, which involves checking for name clashes, even if only briefly, and introduces a new name that doesn't necessarily have a good "meaning". Applying the law from right to left might require a lot of fiddling with k1 to get it in the right form, and checking that the variable, x, is not free in m or k2. In point-free style, the associative law for monads looks like this: join . join = join . fmap join In either direction, this is almost trivial. Cheers, Andrew Bromage