Functions in Haskell take no more than one argument. Applying a function to arguments yields another function with arguments. This allows one to create new functions by partial application.
plus :: Int -> Int -> Int
plus x y = x + y
-- types are shown for illustrative purposes:
plus 3 :: Int -> Int
(plus 3) 2 :: Int
-- as such we can evaluate:
(plus 3) 2 = 5Multiple arguments can also be passed as one in a tuple but this does not allow partial application of the function:
plusTuple :: (Int, Int) -> Int
plusTuple (x, y) = x + yWe can convert between curried and uncurried functions using the primitive function curry and uncurry respectively:
plus :: Int -> Int -> Int
plus = curry plusTuple