Alex Shinn scripsit: > We haven't generally made a distinction for a result being > "implementation-defined", simply saying "unspecified." Thus > with either the R3RS or current R7RS, for the specific question > > (= 0.0 -0.0) => ? > > the ? would be written "unspecified". That is, the semantics > are clearly defined by the standard but the effect varies per > implementation, so from a point of view of portability you > cannot reliably get a consistent result from this expression.
It's more complex than that. There are three possibilities. 1) The implementation does not support -0.0 at all. If not, then the value of the expression `(eqv? 0.0 -0.0)` is always going to be #t. Both R5RS (sub silentio) and R6RS (explicitly) allow this. 2) The implementation supports -0.0 as numerically distinct from 0.0, but `(eqv? 0.0 -0.0)` returns #t. This is the natural interpretation of R5RS, because that standard defers to = when it is comparing inexact numbers, and everybody agrees that (= 0.0 -0.0) is #t. 3) The implementation supports -0.0 as numerically distinct from 0.0, but `(eqv? 0.0 -0.0)` returns #f. This is what R6RS requires. Therefore, R7RS requires (sub silentio) that if 0.0 and -0.0 are not mathematically distinct, then `eqv?` must return #t, but explicitly allows either #t or #f otherwise. -- John Cowan [email protected] http://ccil.org/~cowan The present impossibility of giving a scientific explanation is no proof that there is no scientific explanation. The unexplained is not to be identified with the unexplainable, and the strange and extraordinary nature of a fact is not a justification for attributing it to powers above nature. --The Catholic Encyclopedia, s.v. "telepathy" (1913) _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
