I\'ve been reading about Haskell and I\'m having a hard time understanding how function definitions are handled in this language.
Let\'s say I\'m defining a su
su
it is a -> a -> a rather than (a, a) -> a because of currying. Fun fact: Currying was (re)invented by Haskell Curry! Basically it means if you supply one one argument you'll get back another function of type a -> a, a partial application of sum.
a -> a -> a
(a, a) -> a
a -> a