Report Issues

Lauri Alanko la@iki.fi
Fri, 4 Jan 2002 23:23:40 +0200


What, by the way, is the rationale behind including /= in the Eq class in
the first place? 

Since /= is intended to be semantically equivalent to \x y -> not (x == y),
the only plausible reason for making it overloaded is optimization. But an
optimized implementation of /= can at most be two "not":s faster than just
using not and ==, so the performance benefits seem quite minimal here. This
is nothing compared to, say, Monad.>>, where an optimized implementation can
be quite a lot faster than the default one that uses >>=.

So as far as I see, the overloadability of /= is just a source of subtle
errors, when the implementation doesn't follow the expected (but
non-language-enforceable) semantics.


Lauri Alanko
la@iki.fi