[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] Formal Comment: R7RS 'eqv?' cannot be used for reliable memoization

> I think -0.0 is a hideous wart that in a good implementation
> would not even exist

> I think the existence of #\null at all is a wart, and
> a throw-back to languages like C which require it.

Well, at least Alex is consistent in his opinions. :-)

I concur with Mark and Per. I think the current definition of eqv? for non-IEEE inexact numbers is dangerously odd and the standard would be improved by, at least, leaving the behavior to the implementation.

However, I'm not losing too much sleep. I suspect that implementations that have signed zero but are not IEEE will implement a fast native eqv? that behaves as (eqv? -0.0 +0.0) => #f and a slower R7RS eqv? that behaves as (eqv? -0.0 +0.0) => #t. Therefore, if I want to use R7RS and want an eqv? that reflects operational equivalence on inexact numbers, I will:

* Use the R7RS eqv? on implementation with IEEE inexact numbers;

* Use the suitable native eqv?, if one exists, on implementations with non-IEEE inexact numbers; and

* Use a portable eqv? on other implementations with non-IEEE inexact numbers.

The R7RS library system makes this quite easy to implement this. For this, and of course for much else, the editors should be highly commended.

So, while I think the definition of eqv? is, uh, a hideous wart on the R7RS, I'm not too worried about its practical impact on my code.



Scheme-reports mailing list