Considering:
foldr:: (a -> b -> b) -> b -> [a] -> b
union:: [a] -> [a] -> [a] and
union :: ( a -> a -> Bool) -> [a] -> [a] -> [a]
Then:
f = union . map fst
where:
map:: (a -> b) -> [a] -> [b]
(.):: (a -> b) -> (c -> a) -> c -> b
fst :: (a,b) -> a
has type (in System CT)
---------------------------------------------------------------
{ union:: b -> [a] -> c }. [(b, d)] -> [a] -> c
---------------------------------------------------------------
which comes from the generalisation of the two possibilities:
[(a, d)] -> [a] -> [a]
and
[(a -> a -> Bool), d] -> [a] -> [a] -> [a]
Here:
b is the generalisation of [a] and (a -> a -> Bool)
c is the generalisation of [a] and [a] -> [a]
By the way, I would appreciate if someone could explain the type
g :: (a -> (a -> a,b)) -> [a] -> [a] -> [a]
*****************
(where g = unionBy . map fst)
given by Hugs (ghc behaves differently... ).
Yours,
Carlos
Re: To all those who don't like ad-hoc overloading
Carlos Camarao de Figueiredo Mon, 4 Oct 1999 20:21:34 -0200 (EDT)
- Re: To all those who don't like ad-hoc overlo... Kevin Atkinson
- Re: To all those who don't like ad-hoc overlo... Manuel M. T. Chakravarty
- Re: To all those who don't like ad-hoc overlo... Jan de Wit
- Re: To all those who don't like ad-hoc overlo... Adrian Hey
- Re: To all those who don't like ad-hoc overlo... Kevin Atkinson
- Re: To all those who don't like ad-hoc overlo... Kevin Atkinson
- Re: To all those who don't like ad-hoc overlo... Joe English
- Re: To all those who don't like ad-hoc overlo... Kevin Atkinson
- Re: To all those who don't like ad-hoc overlo... Mariano Suarez Alvarez
- Re: To all those who don't like ad-hoc overlo... Kevin Atkinson
- Re: To all those who don't like ad-hoc overlo... Carlos Camarao de Figueiredo
- Re: To all those who don't like ad-hoc overlo... Carlos Camarao de Figueiredo
