如果 return a = return b 那么 a=b 吗?
If return a = return b then does a=b?
你能证明如果return a = return b
那么a=b
吗?当我使用 =
时,我指的是定律和证明意义上的,而不是 Eq
class 意义上的。
我知道的每个 monad 似乎都满足这个,我想不出一个有效的 monad 不会(Const a
是一个函子和应用程序,但不是 monad。)
没有。考虑简单的 monad:
data Trivial a = Cow
instance Monad Trivial where
_ >>= _ = Cow
return _ = Cow
你能证明如果return a = return b
那么a=b
吗?当我使用 =
时,我指的是定律和证明意义上的,而不是 Eq
class 意义上的。
我知道的每个 monad 似乎都满足这个,我想不出一个有效的 monad 不会(Const a
是一个函子和应用程序,但不是 monad。)
没有。考虑简单的 monad:
data Trivial a = Cow
instance Monad Trivial where
_ >>= _ = Cow
return _ = Cow