Currying - Curry function
Ashley Yakeley
ashley@semantic.org
Tue, 7 Aug 2001 15:46:20 -0700
At 2001-08-07 14:20, Mark Carroll wrote:
>> Is there an exemple of such a function in the Haskell language ?
>
>Most certainly. For instance, we can define:
>
> f :: Integer -> Integer -> Integer
> f x y = x + y
>
> g = f 1
That's not really currying, is it? This is currying:
f :: (Integer,Integer) -> Integer
f (x,y) = x + y
g :: Integer -> Integer
g y = f (1,y)
-- g is f with the first argument curried with 1.
h :: Integer -> Integer
h x = f (x,1)
-- h is f with the second argument curried with 1.
And these are the functions for the first of two arguments:
curry :: ((a,b) -> c) -> (a -> b -> c)
curry f a b = f (a,b)
uncurry :: (a -> b -> c) -> ((a,b) -> c)
uncurry f (a,b) = f a b
... so that we can define
g = curry f 1
--
Ashley Yakeley, Seattle WA