Chaddaï Fouché wrote:
2007/9/25, Andrew Coppin <[EMAIL PROTECTED]>:

I just found it rather surprising. Every time *I* try to compose with
functions of more than 1 argument, the type checker complains.

There is no function that takes more than one argument in Haskell. ;-)
map _could_ be seen as a function with 2 arguments, but in this case
it's more useful to think of it as a function that take one argument
f, a function that turn 'a into 'b and turn it into a new function
that turn a list of 'a into a list of 'b.

This is why I found it so surprising - and annoying - that you can't use a 2-argument function in a point-free expression.

For example, "zipWith (*)" expects two arguments, and yet

 sum . zipWith (*)

fails to type-check. You just instead write

 \xs ys -> sum $ zipWith(*) xs ys

which works as expected.

I can't figure out why map . map works, but sum . zipWith (*) doesn't work. As I say, the only reason I can see is that the type checker hates me and wants to force me to write everything the long way round...

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to