[Haskell-cafe] pair (f,g) x = (f x, g x)?
wenduan
xuwenduan2010 at gmail.com
Sat Jul 2 02:32:57 EDT 2005
I came across a haskell function on a book defined as following:
pair :: (a -> b,a -> c) -> a -> (b,c)
pair (f,g) x = (f x,g x)
I thought x would only math a single argument like 'a', 1, etc....,but
it turned out that it would match something else, for example, a pair as
below:
square x = x*x
pair (square.fst,Char.toUpper.snd) (2,'a')
(4,'A')
The type declaration of pair is what confused me,
pair :: (a -> b,a -> c) -> a -> (b,c),it says this function will take a
pair of functions which have types of a->b,a->c,which I would take as
these two functions must have argument of the same type, which is a,and
I didn't think it would work on pairs as in the above instance,but
surprisingly it did,can anybody enlighten me?
--
X.W.D
More information about the Haskell-Cafe
mailing list