[Haskell-beginners] Question about example in 'using do notation with Writer' section of LYH

Olumide 50295 at web.de
Thu Jan 26 15:41:35 UTC 2017

Hello List,

Chapter 14 of LYH ( 
http://learnyouahaskell.com/for-a-few-monads-more#reader ) has the 
following bit of code:

import Control.Monad.Writer

logNumber :: Int -> Writer [String] Int
logNumber x = Writer (x, ["Got number: " ++ show x])

multWithLog :: Writer [String] Int
multWithLog = do
     a <- logNumber 3
     b <- logNumber 5
     return (a*b)

I have a fair grasp of what's going bu the last line return(a*b) eludes 
me. Specifically its the a*b part that baffles me. I think 3 is bound to 
'a' and 5 to 'b', then return(a*b) would put the value 15 in a context 
... So what becomes of the string parts of the Writer monads created by 
logNumber 3 and logNumber 5 respectively.


- Olumide

More information about the Beginners mailing list