I was trying to puzzle out the exact required behavior of INEXACT->EXACT and 
EXACT->INEXACT just now. I found the description in the Draft (essentially the 
same as R5RS) maddeningly vague, and therefore, after reviewing  the R6RS 
descriptions of EXACT and INEXACT, I came up with the following.  

Draft
-----
INEXACT->EXACT returns an exact representation of z. The value returned is the 
exact number that is numerically closest to the argument. If an inexact 
argument has no reasonably close exact equivalent, then a violation of an 
implementation restriction may be reported.

EXACT->INEXACT returns an inexact representation of z. The value returned is 
the inexact number that is numerically closest to the argument. If an exact 
argument has no reasonably close inexact equivalent, then a violation of an 
implementation restriction may be reported.

These procedures implement the natural one-to-one correspondence between exact 
and inexact integers throughout an implementation-dependent range. See section 
6.2.3.


Suggested wording
-----------------
INEXACT->EXACT returns an exact representation of z. The value returned is the 
exact number that is numerically closest to the argument. For exact arguments, 
the result is the same as the argument. For inexact non-integral real 
arguments, the implementation may return a rational approximation, or may 
report an implementation violation. For inexact complex arguments, the result 
is a complex number whose real and imaginary parts are result of applying 
INEXACT->EXACT to the real and imaginary parts of the argument, respectively. 
If an inexact argument has no reasonably close exact equivalent, then a 
violation of an implementation restriction may be reported.

EXACT->INEXACT returns an inexact representation of z. The value returned is 
the inexact number that is numerically closest to the argument. For inexact 
arguments, the result is the same as the argument. For exact complex numbers, 
the result is a complex number whose real and imaginary parts are the result of 
applying EXACT->INEXACT to the real and imaginary parts of the argument, 
respectively. If an exact argument has no reasonably close inexact equivalent, 
then a violation of an implementation restriction may be reported.

These procedures implement the natural one-to-one correspondence between exact 
and inexact integers throughout an implementation-dependent range. See section 
6.2.3.

Note: the names INEXACT->EXACT  and EXACT->INEXACT are historical anomalies; 
the argument to each of these procedures may be either exact or inexact. 

By the way, when the next draft is prepared, would it be possible to add the 
hyperref package? I do so like hyperlinks. 

-- vincent

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

Reply via email to