[Haskell-cafe] Point-free style

Fritz Ruehr fruehr at willamette.edu
Mon Feb 14 18:42:12 EST 2005


On Feb 14, 2005, at 2:07 AM, Daniel Fischer wrote:

> A question for the point-free society:
> Is there any advantage of defining
>
> (.<) = (.) . (.)
>
> rather than
>
> f .< g = \x y -> f (g x y)      -- or f $ g x y ?
>
> Analogous question for (.) . (.) . (.) etc.
>

Well, from the fact that you even pose the question, and 
notwithstanding wise
remarks from Simon Marlow, I'm guessing that "out of sheer impish 
delight" or
"to tickle the aesthetic sense the way a bump to the elbow tickles the 
funny bone"
are not the sort of answers you're looking for :) .

(Note that others have since risen to the occasion in this vein. And 
remember that all
these "dotted dots" were Jerzy's fault, not mine, and that beer was at 
hand ... .)

More seriously, however, the generalization to n raises some 
interesting issues.
For surely we are tempted to something like this, in a half-imagined 
syntax
(read the LHS as "dot sub n"):

     (. _ n) = foldl1 (.) (replicate n (.))

And, just as surely, we shouldn't be satisfied with the answer 
"Hindley-Milner
don't do dat" * . Rather, we should seek out ways to extend the type 
system and
the language so that we could make this abstraction, and others like 
it, which
are compelling at some basic level.

The point being, this generalization might not occur to us (and drive 
us to
new heights, etc.) if we didn't express it in the more "precious" style.

   --  Fritz

PS: Which is not to say that the Haskell type system can't be wrenched 
(coerced,
cajoled, gently plied with sweet whispers ...) into doing things 
*similar* to
this, using type-level natural numbers, or perhaps 
existentially-quantified data
constructors. I'm sure that "extreme typists" like Oleg and Ken do this 
sort of
thing to warm up in the morning, the way other typists (the mundane 
sort) lace
their fingers together and stretch them out before settling in to their
60-words-per-minute day.

But perhaps someone else should post some code along these lines, lest 
Oleg and
Ken despair too much of having wasted their efforts on us. I promise to 
try out
a few ideas myself when I get the chance.


* (take no offense: just a reference to the old "In Living Color" 
variety show)



More information about the Haskell-Cafe mailing list