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

不羁岁月 提交于 2019-12-03 23:24:00

问题


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?


回答1:


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.



来源:https://stackoverflow.com/questions/4204086/is-the-monad-w-instance-anywhere-standard

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!