[Haskell-beginners] Re: Function composition with more than 1 parameter
streborg at hotmail.com
Sat Oct 25 18:44:28 EDT 2008
> Sometimes pointfree style is clearer and more readable, sometimes it makes
> things obscure.
> Get some experience writing both, pointfree and pointful versions, to
> a feeling when to write pointfree and when not (and when to use mixed style,
> e.g. "hm x = length . matches x" might be clearer).
I think that's good advice :)
Having a better understanding of how it works is never a bad thing ! :)
I still have trouble understanding a simple one like :-
matches = filter . (==)
which actually is kind of nice and clean, but when I try to understand it I
get confused. In particular I wonder how it "knows" where the parameters go ?
(==) is of type (==) :: Eq a => a -> a -> Bool
yet I'm giving it incorrect parameters, I'm giving it a [a]
not a a (or am I ?)
Or, does it take the only valid parameter I give it, the a, and then form a
function out of this (a==), and then compose this new function with filter,
which does take a function of this new type. Then, there is one parameter
left, [a], which is what this new function needs...and so it all works out !
Why doesn't it try to take the 2 parameters for (==), and bomb out when it
finds the second parameter is wrong ? Is this where the monomorphism
restriction things comes into play ? Or now because I've given it a type,
somehow it can now work things out.... ?
Does anyone know of a good tutorial on how this all works ? :)
More information about the Beginners