The foldr function does not start from the right. It associates to the right.
This talk specifically addresses this common mistake.
http://functionaltalks.org/2013/06/19/tony-morris-explain-list-folds-to-yourself/
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 toldfor 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 wherefoldr f b Nil = bfoldr f b (Cons a y) = foldr f (f a b) ySo 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?
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners