
On Thu, 2 Oct 2003 16:09:11 +0100, Alastair Reid
So you should not interpret the '==' in the monad law as requiring you to define an Eq instance.
If you do define an Eq instance, it ought to be reflexive, symmetric and transitive (i.e., an equivalence) if you want functions with Eq constraints to behave in a meaningful way.
Thanks, I understand now. (Incidentally, the == I was defining was an equivalence, AFAICS.)
Also, although there's probably no necessity for your Eq instance to match your notion of equality between computations (i.e., the == used in the monad laws), I think you'll end up very confused if you define an Eq instance which doesn't match in the same way that having Eq on pairs ignore the 2nd field would confuse you.
Sure. I imagine only very specialized monads will need an Eq that doesn't match the equality implicit in the monad laws. As Derek has pointed out, I'm yet far from reaching a point where I should worry about that :) Thanks for your comments, Juanma