Hi Chris. I don't think that version could type-check. Try it out. - Conal
In State, the tuple order that is use is
> newtype State s a = State {
> runState :: (s -> (a, s))
> }
So I would expect you to use the same order for writer. This only changes (>>)
below:> return = (a,mempty)
> instance Monoid o => Monad ((,) o) where
> (a,o) >>= f = (a',o `mappend` o') where (a',o') = f a
--
Chris