let makes function too much specific
Say you define a myadd
function:
let myadd x y = x + y
Then the type is Num a => a -> a -> a
. If on the other hand, you define the method using currying:
let myadd2 \x -> \y -> x + y
The type is more specific: Integer -> Integer -> Integer
. Strangely enough :t \x -> \y -> x + y
returns the more general form.