[Haskell-cafe] using the writer monad to better understand foldl and foldr, and haskell debugging techniques in general

Felipe Lessa felipe.lessa at gmail.com
Sun Feb 10 18:44:36 EST 2008

On Feb 10, 2008 9:33 PM, Thomas Hartman <tphyahoo at gmail.com> wrote:
> -- using writer monad
> -- Nothing unsafe here, pure referrentially transparent goodness
> myfoldrW f z []     =  return z
> myfoldrW f z (x:xs) = do
>     r <- (myfoldrW f z xs)
>     tell ("x,r: " ++ (show (x,r)) ++ "\n" )
>     return $ x `f` r

*Main> foldr const 0 [1..]
*Main> putStrLn $ snd $ runWriter $ myfoldrW const 0 [1..]

One of the good things from foldr is the possibility of
"short-circuiting", so to speak. However I don't know if it is
possible to show this using the writer monad, as is would involve
observing if the function is strict or not in its second argument.



More information about the Haskell-Cafe mailing list