[Haskell-beginners] foldr, Foldable and right-side folding

Raja rajasharan at gmail.com
Sun Dec 6 00:20:58 UTC 2015


foldr is supposed to start folding from the right side (as the name
suggests).
and this is why it is synonymous to "list construction" as I'm told

for e.g:
> foldr (:) [ ] [1,2,3,4,5]
[1,2,3,4,5]

In the same spirit I'm trying to construct a Foldable instance of my own
type:

data Li a = Nil | Cons a (Li a)
    deriving (Show)

instance Foldable Li where
    foldr f b Nil = b
    foldr f b (Cons a y) = foldr f (f a b) y

So I'm trying out foldr for my type:
> foldr Cons Nil (Cons 1 (Cons 2 Nil))
Cons 2 (Cons 1 Nil)

This shows my foldr implementation i'm not folding from right side,
but how can I possibly do that - the data could have been an infinite
stream.
It feels like I will never be able to truly write a foldr implementation
with "right" folding mechanism.

Any thoughts?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151205/3cd48dda/attachment.html>


More information about the Beginners mailing list