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