`Monad((,)w)`实例是否符合标准?

时间:2010-11-17 11:55:33

标签: haskell monads

我一直使用Writer对的拼写,但我总是要自己实例化:

instance (Monoid w) => Monad ((,) w) where
    return x = (mempty, x)
    ~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y)

这是否存在于标准库的任何地方?

1 个答案:

答案 0 :(得分:8)

正如评论中提到的camccann,Control.Monad.Instances仅定义了Functor个实例。

Control.Monad.Applicative定义了Applicative个实例。

transformers包,因此也是版本2及以上版本 mtl包,定义包装函数writer :: (a, w) -> Writer w a

但我没有在任何地方找到Monad实例。