[Haskell-cafe] Re: [Haskell] Trying to get a Composite design pattern to work

Chris Kuklewicz haskell at list.mightyreason.com
Tue Mar 14 19:54:05 EST 2006


Neil Mitchell wrote:
>> How's this?
> 
> What about ++, in Haskell thats just an ordinary function, yet you are
> using the library one in this case.

(++) a b = foldr (:) b a

or

(++) = flip (foldr (:))

so

concat = foldr (flip (foldr (:))) []

also

map = (\f -> foldr ((:).f) [])

thus

concatMap = (\f -> (foldr (flip (foldr (:))) []) . (foldr ((:).f) []))

No recursive definitions in sight...all built with foldr

-- 
Chris


More information about the Haskell-Cafe mailing list