[Haskell-cafe] Question of a manual computation on Reader Monad.

Peter Cai newptcai at gmail.com
Sat Aug 25 09:57:48 EDT 2007


Hi all,

In order to improve my understanding of monad, I am trying to do some manual
computation on "Reader Monad" but I got some problem.

The computation is like this:

--instance Monad (Reader e) where
--    return a         = Reader $ \e -> a
--    (Reader r) >>= f = Reader $ \e -> f (r e) e

runReader (do { b <- Reader $ show; return b } )  -- This is the initial
expression, it should equals "show"

runReader (Reader $ show >>= \b -> return b)   -- remove do notion

runReader (Reader $ \e -> return( show e ) e)  -- apply the definition of
">>="

runReader (Reader $ \e -> (Reader $ \e1 -> show(e)) e)  -- apply the
definition of "return"

But the last expression is incorrect, and I don't know how to go on.

Could anyone explain this for me?

Thanks in advance!

Reference : http://www.haskell.org/all_about_monads/html/readermonad.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20070825/ccdb6227/attachment-0001.htm


More information about the Haskell-Cafe mailing list