[Haskell-cafe] Foldr tutorial, Inspired by Getting a Fix from a Fold

Bernie Pope bjpop at csse.unimelb.edu.au
Mon Feb 12 13:40:00 EST 2007


Nicolas Frisby wrote:
> Guess this is a tricky choice for a foldr intro, since it requires a
> "paramorphism" (see bananas lenses wires etc.)
>
> para :: (a -> [a] -> b -> b) -> b -> [a] -> b
> para f e [] = e
> para f e (x:xs) = f x xs (para f e xs)
>
> -- note that the original tail of the list (i.e. xs and not xs') is
> used in the else-branch
> dropWhile' p = para (\x xs xs' -> if p x then xs' else (x:xs)) []
Actually, several people tried to use para, but of course it is not in 
the spirit of the challenge :)

Cheers,
Bernie.


More information about the Haskell-Cafe mailing list