The R7RS-large committee is trying to sort out what R6RS Section 3.4 means by its first two sentences:
Implementations of Scheme must support number objects for the entire tower of subtypes given in section 3.1. Moreover, implementations must support exact integer objects and exact rational number objects of practically unlimited size and precision, and to implement certain procedures (listed in 11.7.1) so they always return exact results when given exact arguments. Does this mean that implementations may arbitrarily restrict the ranges of non-real numbers? All the procedures mentioned in 11.7.1 are closed over the real numbers (except for division by zero), so they cannot force the existence of non-real numbers. 3.4 explicitly says "Implementations may support only a limited range of inexact number objects of any type, subject to the requirements of this section." That would seem to bless having exact (or some exact) but not inexact non-real numbers. Of the implementations that aim at R6RS conformance, all but Guile support effectively unlimited exact and IEEE-limited inexact complex numbers; Guile supports only the latter. By what I understand, people who need to use complex numbers typically care much more about inexact numbers than exact ones. In particular, Fortran, C++, and NumPy support only the inexact kind. I'd appreciate authoritative, or even non-authoritative but convincing, explanations of what R6RS means to imply here. -- John Cowan http://www.ccil.org/~cowan co...@ccil.org Statistics don't help a great deal in making important decisions. Most people have more than the average number of feet, but I'm not about to start a company selling shoes in threes. --Ross Gardler _______________________________________________ r6rs-discuss mailing list r6rs-discuss@lists.r6rs.org http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss