# [R6RS] string->number

Michael Sperber sperber at informatik.uni-tuebingen.de
Wed Aug 30 13:45:34 EDT 2006

dyb at cs.indiana.edu writes:

>> No, it wasn't.  R5RS 6.2.2 says:
>>
>>     With the exception of inexact->exact, the operations
>>     described in this section must generally return
>>     inexact results when given any inexact arguments. An
>>     operation may, however, return an exact result if it
>>     can prove that the value of the result is unaffected
>>     by the inexactness of its arguments. For example,
>>     multiplication of any number by an exact zero may
>>     produce an exact zero result, even if the other
>>     argument is inexact.
>
> That's what I thought.  But you claimed the proof would have to be made
> for "all substitutions of exact numbers for the inexact ones", which means
> that I can't reduce (/ 0 3.5) to 0 because if I were to substitute 0 for
> 3.5 in (/ 0 3.5) I would get (/ 0 0) which (we both agree) is not 0.

The wording of the second sentence you cite doesn't apply in this
case.  It also doesn't apply in the case of (/ 0 +0.0).  I believe
Will thought that it might erroneously have served as the rationale
for allowing (/ 0 +0.0) => 0.  I think a natural consequence of the
wording you cite is indeed (/ 0 3.5) => +nan.0.  That's fine with me.

> Perhaps you meant to imply some sort of equivalence in the substitution.
> But all exact equivalents of +0.0 and -0.0 are nonzero,

That's false in all Scheme implementations I know, and would be an
unwise model.  At the risk of incurring more of Will's and your wrath,
I'll refer to the relevant section ("The case against rational -0") in
Egner et al.'s 2004 Scheme Workshop paper which discusses pretty much
exactly this issue.

> Really?  What about these two examples in base.tex:
>
> (* 0 +inf.0)                           \ev  0 \textit{or} +nan.0
> (* 0 +nan.0)                           \ev  0 \textit{or} +nan.0

That's what we're talking about; Will and I would like to change it.

--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla