From: Paul F. D. <di...@dl...> - 2003-02-06 01:32:12
|
Christophe Rhodes wrote: > [ Paul: if you're following, it would be good to define a > subtypep.integer-or-ratio analogous to your current > subtypep.fixnum-or-bignum test, such that you test for the > equivalence of (OR INTEGER RATIO) with RATIONAL ] I did create such a test, but I did not commit it. I am not convinced that the standard requires that RATIONAL be a subtype of (OR INTEGER RATIO). The page for INTEGER says: The types fixnum and bignum form an exhaustive partition of type integer. But the page for RATIONAL just says: The canonical representation of a rational is as an integer if its value is integral, and otherwise as a ratio. The types integer and ratio are disjoint subtypes of type rational. The writeup for issue #290 (REAL-NUMBER-TYPE) might have some bearing on this, but it appears to contradict the fixnum/bignum partition of integers. Paul |
From: Christophe R. <cs...@ca...> - 2003-02-06 09:06:31
|
"Paul F. Dietz" <di...@dl...> writes: > Christophe Rhodes wrote: > > equivalence of (OR INTEGER RATIO) with RATIONAL ] > > The page for INTEGER says: > > The types fixnum and bignum form an exhaustive partition > of type integer. > > But the page for RATIONAL just says: > > The canonical representation of a rational is as an integer > if its value is integral, and otherwise as a ratio. > > The types integer and ratio are disjoint subtypes of type rational. Hahahaha. I can see where you're coming from; I could make a case for "The canonical representation..." saying that there are no RATIONALs that are neither INTEGERs nor RATIOs... but I concede that it's a judgement call. Hey ho... in any case, with the patch I sent, SBCL treats (OR INTEGER RATIO) as equivalent to RATIONAL, as we don't have any strange non-integer non-ratio RATIONAL objects. Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |