m (→Slightly more complicated: Capitalization)
m (fix typo)
Latest revision as of 22:22, 24 July 2007
Partial application in Haskell involves passing less than the full number of arguments to a function that takes multiple arguments.
 1 Examples
 1.1 Simple introduction
add :: Int -> Int -> Int add x y = x + y addOne = add 1
add :: Int -> (Int -> Int)
This means that add actually takes one argument and returns a function that takes another argument and returns an Int.
 1.2 Slightly more complicated
What if you have a higher order function?
comp2 :: (a -> b) -> (b -> b -> c) -> (a -> a -> c) comp2 f g = (\x y -> g (f x) (f y))
Remembering the maxim that: Functions are not partial, you can partially apply a function.So, is this a partial definition of
comp2' f = (\x y -> add (f x) (f y))
comp2' f = comp2 f add