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

Nicolas Frisby nicolas.frisby at gmail.com
Mon Feb 12 14:37:07 EST 2007


Oops; I totally forgot the context of this whole discussion!

I enjoyed your article.

On 2/12/07, Bernie Pope <bjpop at csse.unimelb.edu.au> wrote:
> 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