I'm going through "Haskell Programming from first principles" and in section 7.3 Anonymous Functions there is an exercise on converting multiple parameters to anonymous functions, and it asks:1. Which (two or more) of the following are equivalent?mTh1 x y z = x * y * zmTh2 x y = \z -> x * y * zmTh3 x = \y -> \z -> x * y * zmTh4 = \x -> \y -> \z -> x * y * zSo I created a file, anon.hs (attached):module Anon wheremTh1 x y z = x * y * zmTh2 x y = \z -> x * y * zmTh3 x = \y -> \z -> x * y * zmTh4 = \x -> \y -> \z -> x * y * zI load that into ghci and check the function types:$ ghci anon.hsGHCi, version 8.2.1: http://www.haskell.org/ghc/ :? for help[1 of 1] Compiling Anon ( anon.hs, interpreted )Ok, 1 module loaded.*Anon> :t mTh1mTh1 :: Num a => a -> a -> a -> a*Anon> :t mTh2mTh2 :: Num a => a -> a -> a -> a*Anon> :t mTh3mTh3 :: Num a => a -> a -> a -> a*Anon> :t mTh4mTh4 :: Integer -> Integer -> Integer -> IntegerWhy is mTh4 different from the rest?On the flip side If I enter "mTh4 = \x -> \y -> \z -> x * y * z" directly in ghci command line then it has same type as the others:$ ghciGHCi, version 8.2.1: http://www.haskell.org/ghc/ :? for helpPrelude> mTh4 = \x -> \y -> \z -> x * y * zPrelude> :t mTh4mTh4 :: Num a => a -> a -> a -> a-- Wink
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners