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