On Wed, Jul 29, 2009 at 4:06 AM, Johan Tibell<johan.tib...@gmail.com> wrote: > (map maySwitch . unfoldr go) (x1,y1,0) > > should work.
which is the same as > map maySwitch (unfoldr go (x1,y1,0)) People have stylistic differences with ($) vs. (.); I would write it as > map maySwitch $ unfoldr go $ (x1,y1,0) (or, more likely) > map maySwitch $ unfoldr go (x1,y1,0) but some people like to make the function pipelines more explicit (with the composition operator (.) instead of the application operator ($)). Read ($) as a parenthesis that extends as far to the right as possible; so you can write, for example: > map (+1) $ map (*2) $ map (+3) [1,2,3] which is the same as > map (+1) (map (*2) (map (+3) [1,2,3])) but without having to count how many parentheses you need on the right. Due to the precedences of (.) and ($), you can use either > blah $ blah2 $ blah3 $ something or > blah . blah2 . blah3 $ something After inlining ($) and (.), the former is > blah (blah2 (blah3 (something))) whereas the latter is > (\x -> blah ((\y -> blah2 (blah3 y)) x)) (something) which beta reduces to the same thing: => blah ((\y -> blah2 (blah3 y)) (something)) => blah (blah2 (blah3 (something))) -- ryan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe