Hi

I have a trouble to run an example of "Learn Your A Haskell.." Chap 13 below:

========
import Data.Monoid
--Don't import Control.Monad.Writer

newtype Writer w a = Writer { runWriter :: (a, w) }  

instance (Monoid w) => Monad (Writer w) where  
    return x = Writer (x, mempty)  
    (Writer (x,v)) >>= f = let (Writer (y, v')) = f x in Writer (y, v `mappend` v')

--Define tell
tell :: [String] -> Writer [String] Int
tell w = Writer (0, w)  -- what'sa hell "0" for ???!!!

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  
    tell ["Gonna multiply these two"]
    return (a*b)  

main = putStrLn . show $ runWriter multWithLog
========

I changed two places to run it without error:
[1] Ambiguity error of Writer, uneless I comment out "import Control.Monad.Writer", and
[2] Define tell function

My questions are:
Why does LYAH sample fail as is?
Do the changes above look reasonable?
I'm not certain about my "tell". Where is the correct instantiation of "tell" included?

Thanks,
TJ