
2 Dec
2007
2 Dec
'07
12:27 p.m.
I'd like to have a (,)-style writer instance alongside the (->)-based reader instance for Monad in Control.Monad.Instances. Here's the current reader: instance Monad ((->) r) where return = const f >>= k = \ r -> k (f r) r and my proposed writer: instance Monoid o => Monad ((,) o) where return = pure (o,a) >>= f = (o `mappend` o', a') where (o',a') = f a where the return definition relies on the Applicative instance of ((,) o). Written out explicitly, return a = (mempty,a) Control.Monad.Instances will also need two new imports: import Data.Monoid (Monoid(..)) import Control.Applicative (pure) Suggested review period: two weeks (ending Dec 16). Comments? - Conal