In Haskell, I can give too few arguments to a function to get back a curried function:
-- the addition function
Prelude> :t (+)
(+) :: Num a => a -> a -> a
-- curried with its first argument => the increment function
Prelude> :t (+) 1
(+) 1 :: Num a => a -> a
-- supplied with both arguments => the result
Prelude> :t (+) 1 2
(+) 1 2 :: Num a => a
But what do I get when I supply too many arguments?
Prelude> :t (+) 1 2 3
(+) 1 2 3 :: (Num a, Num (a -> t)) => t
What is this, does it have a name, and is it useful for anything?