[Haskell-cafe] Re: Why purely in haskell?

Wolfgang Jeltsch g9ks157k at acme.softbase.org
Fri Jan 11 04:27:44 EST 2008

Am Freitag, 11. Januar 2008 08:11 schrieb Lennart Augustsson:
> Some people seem to think that == is an equality predicate.
> This is a big source of confusion for them; until they realize that == is
> just another function returning Bool they will make claims like
> [1..]==[1..] having an unnatural result.
> The == function is only vaguely related to the equality predicate in that
> it is meant to be a computable approximation of semantic equality (but
> since it's overloaded it can be anything, of course).
>   -- Lennart

But class methods are expected to fulfill some axioms.  I’d suppose that (==) 
should be an equivalence relation.  Of course, this is not implementable 
because of infininte data structures.  But one could relax the axioms such 
that it’s allowed for (==) to return _|_ instead of the expected value.  
Differentiating between data and codata would of course be the better 

However, the fact that (0 / 0) == (0 / 0) yields False is quite shocking.  It 
doesn’t adhere to any meaningful axiom set for Eq.  So I think that this 
behavior should be changed.  Think of a set implementation which uses (==) to 
compare set elements for equality.  The NaN behavior would break this 
implementation since it would allow for sets which contain NaN multiple 

Best wishes,

More information about the Haskell-Cafe mailing list