Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is the `Monad ((,) w)` instance anywhere standard?

Tags:

haskell

monads

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?

like image 871
luqui Avatar asked Nov 17 '10 11:11

luqui


1 Answers

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.

like image 180
Yitz Avatar answered Nov 16 '22 23:11

Yitz