如果返回a =返回b,那么a = b?
你能certificate,如果return a = return b
然后a=b
? 当我使用=
,我的意思是在法律和certificate的意义上,而不是Eq
意义。
我所知道的每一个monad似乎都能满足这个要求,我想不出一个有效的monad,而不是( Const a
是一个函数和应用,而不是monad)。
不可以。考虑一下微不足道的monad:
data Trivial a = Cow instance Monad Trivial where _ >>= _ = Cow return _ = Cow