I use the pair spelling of Writer
all the time, but I always have to instantiate myself:
instance (Monoid w) => Monad ((,) w) where
return x = (mempty, x)
~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y)
Does this live anywhere in the standard libraries?
As camccann mentioned in the comment, Control.Monad.Instances
defines only the Functor
instance.
Control.Monad.Applicative
defines the Applicative
instance.
The transformers
package, and thus also version 2 and above of the
mtl
package, define a wrapper function writer :: (a, w) -> Writer w a
.
But I have not found the Monad
instance anywhere.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With