Hi<div><br></div><div>I have a trouble to run an example of &quot;Learn Your A Haskell..&quot; Chap 13 below:</div><div><br></div><div>========</div><div><div>import Data.Monoid</div><div>--Don&#39;t import Control.Monad.Writer</div>
<div><br></div><div>newtype Writer w a = Writer { runWriter :: (a, w) }  </div><div><br></div><div>instance (Monoid w) =&gt; Monad (Writer w) where  </div><div>    return x = Writer (x, mempty)  </div><div>    (Writer (x,v)) &gt;&gt;= f = let (Writer (y, v&#39;)) = f x in Writer (y, v `mappend` v&#39;)</div>
<div><br></div><div>--Define tell</div><div>tell :: [String] -&gt; Writer [String] Int</div><div>tell w = Writer (0, w)  -- what&#39;sa hell &quot;0&quot; for ???!!!</div><div><br></div><div>logNumber :: Int -&gt; Writer [String] Int  </div>
<div>logNumber x = Writer (x, [&quot;Got number: &quot; ++ show x])  </div><div><br></div><div>multWithLog :: Writer [String] Int  </div><div>multWithLog = do  </div><div>    a &lt;- logNumber 3  </div><div>    b &lt;- logNumber 5  </div>
<div>    tell [&quot;Gonna multiply these two&quot;]</div><div>    return (a*b)  </div><div><br></div><div>main = putStrLn . show $ runWriter multWithLog</div></div><div>========</div><div><br></div><div>I changed two places to run it without error:</div>
<div>[1] Ambiguity error of Writer, uneless I comment out &quot;import Control.Monad.Writer&quot;, and</div><div>[2] Define tell function</div><div><br></div><div>My questions are:</div><div>Why does LYAH sample fail as is?</div>
<div>Do the changes above look reasonable?</div><div>I&#39;m not certain about my &quot;tell&quot;. Where is the correct instantiation of &quot;tell&quot; included?</div><div><br></div><div>Thanks,</div><div>TJ</div><div>
 </div>