标签: haskell monads
为什么Control.Applicative.Const没有monad实例?以下定义是正确的,还是违反了monad法则?
Control.Applicative.Const
instance Monoid a => Monad (Const a) where return _ = Const mempty (Const x) >>= _ = Const x
你能想到任何有用的应用吗?
答案 0 :(得分:18)
违反了left identity law:return x >>= f必须与f x相同,但请考虑f x = Const (x + 1)。
return x >>= f
f x
f x = Const (x + 1)