我一直使用Writer
对的拼写,但我总是要自己实例化:
instance (Monoid w) => Monad ((,) w) where
return x = (mempty, x)
~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y)
这是否存在于标准库的任何地方?
答案 0 :(得分:8)
正如评论中提到的camccann,Control.Monad.Instances
仅定义了Functor
个实例。
Control.Monad.Applicative
定义了Applicative
个实例。
transformers
包,因此也是版本2及以上版本
mtl
包,定义包装函数writer :: (a, w) -> Writer w a
。
但我没有在任何地方找到Monad
实例。