如果返回a = return b那么a = b?

时间:2016-01-25 23:24:16

标签: haskell monads semantics equality equational-reasoning

如果return a = return b然后a=b,您能证明这一点吗?当我使用=时,我的意思是法律和证据意义,而不是Eq阶级意义。

我认识的每一个单子似乎都满足了这一点,我想不出一个不会有效的单子(Const a是一个算子和应用,但不是一个单子。)

1 个答案:

答案 0 :(得分:65)

没有。考虑一下琐碎的monad:

data Trivial a = Cow

instance Monad Trivial where
  _ >>= _ = Cow
  return _ = Cow