Bill, hello.

On 27 Aug 2025, at 15:40, b...@ccrma.stanford.edu wrote:

> The r7rs spec also says that the result of
> (eqv? +nan.0 +nan.0) is unspecified, so I
> guess both eq? and eqv? should return #f?
> The spec is waffling all over the place
> about numbers and (for example) empty
> strings.  But apparently it is now the
> case that (eq? 123123 123123) should return #t.

I think the text is still saying that (eq? 123123 123123) is implementation 
defined, but the result has to be consistent with eqv?.

NaNs are of course special, so that (= +nan.0 +nan.0) is required to be #f 
(Sect.6.2.6).  But that (Sect.6.1) requires eqv? to be #f if any argument is a 
NaN (ie, (eqv? +nan.0 +nan.0) is required to be #f).

But it does look as if, while (eqv? a b) can in general return #f or #t, only 
in the latter case is eq? allowed to return #t (or, put the other way, if (eq? 
a b) returns #t, then eqv? must, also).  Thus (eq? +nan.0 +nan.0) seems to be 
required to return #f, also.

...I'm _fairly_ sure.

Best wishes,

Norman


-- 
Norman Gray  :  https://nxg.me.uk

_______________________________________________
Cmdist mailing list
Cmdist@ccrma.stanford.edu
https://cm-mail.stanford.edu/mailman/listinfo/cmdist

Reply via email to