Подтвердить что ты не робот

Если return a = return b, то делает a = b?

Можете ли вы доказать, что если return a = return b then a=b? Когда я использую =, я имею в виду смысл законов и доказательств, а не смысл класса Eq.

Кажется, что каждая монада удовлетворяет этому, и я не могу думать о действительной монаде, которая не будет (Const a является функтором и аппликативным, но не монадой.)

4b9b3361

Ответ 1

Нет. Рассмотрим тривиальную монаду:

data Trivial a = Cow

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