[Haskell-cafe] Function composition confusion

Henning Thielemann lemming at henning-thielemann.de
Wed Apr 27 09:37:19 EDT 2005

On Wed, 27 Apr 2005, Anuj Seth wrote:

> Excuse the newbie'ness of my question.
> Saw an example in Two Dozen Questions by Rexx Page.
> blocks blockSize =
>    takeWhile ( not . null ) . map fst .
>              iterate (splitAt blockSize . snd) . splitAt blockSize
> What is the meaning of the . operators outside the parentheses ?

The same as inside. :-)
  (splitAt blockSize) transforms a list to a pair of lists. So imagine a 
list input at the right of (splitAt blockSize) and a pair output at the 
left. This pair is piped into the 'iterate' part which transforms a list 
of pairs into a list of pairs of lists. This in turn is piped to (map fst) 
and so on.

More information about the Haskell-Cafe mailing list