ajb@spamcop.net wrote:
Agreed. I was about to answer that the situation is the same with the monad laws not being valid for some monad we all love, and still we do not consider the resulting programs illegal.
I do! The H98 report says that all Monad instances must obey the monad laws. If they don't, they're illegal.
Okay. I wasn't aware that the report makes this mandatory.
In general, it'd be nice to be able to get the compiler to check that you've implemented at least a minimal set of operations in your class instance.
Yes. But actually what we would need would be that it checks as well that we have implemented at *most* a minimal set of operations. Otherwise, we are back to the point where I can implement both (==) and (/=), and in a way that the supposed invariant is broken. Ciao, Janis. -- Dr. Janis Voigtlaender http://wwwtcs.inf.tu-dresden.de/~voigt/ mailto:voigt@tcs.inf.tu-dresden.de