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

Reply via email to