Aaron Denney wrote:
so do you really seriously consider the possibility that
this might not hold in your Int related code?
if (x==y) then f x else g x y
might not mean the same as..
if (x==y) then f y else g x y
In Int code, of course not, because I know the types, and I know the
behaviour of (==) on Ints. But f is specialized to work on Ints, isn't
it, so it's reasonable to know what semantics (==) has for Ints, and
depend on them?
Why are Ints special in this way? Couldn't you use say exacly the same
about any type (just substitute type "X" of your choice for "Int")
IMO if your going to define a type X which is intended to be an Eq
instance you should always ensure, one way or another that all
exposed primitives that operate on that type respect equality, as
defined by == for the instance method. (And hence more complex
functions built on those primitives do too).
Just MO, the report doesn't make this clear 1 way or another AFAICS.
Regards
--
Adrian Hey
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe