Si retourner a = retourner b alors a = b?

Pouvez-vous prouver que si return a = return b alors a=b ? Quand j’utilise = , je veux dire dans le sens des lois et des preuves, pas dans le sens de la classe Eq .

Chaque monade que je connais semble le satisfaire, et je ne peux pas penser à une monade valide qui ne le serait pas ( Const a est un foncteur et un applicatif, mais pas une monade).

Non. Considérez la monade sortingviale:

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