@@ -236,9 +236,12 @@ mapMaybe f (x::xs) =
236236-- Folds
237237--------------------------------------------------------------------------------
238238
239+total foldrImpl : (t -> acc -> acc) -> acc -> (acc -> acc) -> List t -> acc
240+foldrImpl f e go [] = go e
241+foldrImpl f e go (x::xs) = foldrImpl f e (go . (f x)) xs
242+
239243instance Foldable List where
240− foldr f e [] = e
241− foldr f e (x::xs) = f x (foldr f e xs)
244+ foldr f e xs = foldrImpl f e id xs
242245
243246--------------------------------------------------------------------------------
244247-- Special folds