[Haskell-cafe] Re: what are the points in pointsfree?

ajb at spamcop.net ajb at spamcop.net
Fri Dec 15 00:09:13 EST 2006


G'day all.

Quoting Steve Downey <sdowney at gmail.com>:

> 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


More information about the Haskell-Cafe mailing list