【发布时间】:2010-11-17 11:55:33
【问题描述】:
我一直使用Writer的配对拼写,但我总是要实例化自己:
instance (Monoid w) => Monad ((,) w) where
return x = (mempty, x)
~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y)
这是否存在于标准库中的任何位置?
【问题讨论】:
-
既然你提到它,很奇怪
Control.Monad.Instances包含((,) a)的Functor实例,但不包含Monad实例,尽管有匿名读者((->) e)和匿名错误Either e. -
@McCann:你如何为
((,) a)实现 Monad 实例?例如,我不知道如何实现return。 -
@trinithis,就像问题中的那个(你需要一个
Monoid a约束)。就是这样。