From fe84c8c6a3f46dfc36950c01278847ef08008968 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 23 Jul 2008 01:06:26 +0000 Subject: [PATCH] protect nan? test by real?, as Aziz points out; also fix nan?, finite?, and infinite? to insist on real arguments svn: r10869 --- collects/rnrs/base-6.ss | 20 +++++++++++++------- collects/tests/r6rs/test.sls | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/collects/rnrs/base-6.ss b/collects/rnrs/base-6.ss index a48d2b8af4..551f19b3cf 100644 --- a/collects/rnrs/base-6.ss +++ b/collects/rnrs/base-6.ss @@ -195,16 +195,22 @@ (integer? (real-part o))))) (define (finite? n) - (not (or (eqv? n +inf.0) - (eqv? n -inf.0) - (eqv? n +nan.0)))) - + (if (real? n) + (not (or (eqv? n +inf.0) + (eqv? n -inf.0) + (eqv? n +nan.0))) + (raise-type-error 'infinite? "real" n))) + (define (infinite? n) - (or (eqv? n +inf.0) - (eqv? n -inf.0))) + (if (real? n) + (or (eqv? n +inf.0) + (eqv? n -inf.0)) + (raise-type-error 'infinite? "real" n))) (define (nan? n) - (eqv? n +nan.0)) + (if (real? n) + (eqv? n +nan.0) + (raise-type-error 'nan? "real" n))) ;; Someone needs to look more closely at div and mod. ;; I started with the code from Enger04, and poked it diff --git a/collects/tests/r6rs/test.sls b/collects/tests/r6rs/test.sls index 590801e603..0e76d61219 100644 --- a/collects/tests/r6rs/test.sls +++ b/collects/tests/r6rs/test.sls @@ -109,7 +109,7 @@ (set! checked (+ 1 checked)) (unless (if (and (real? expected) (nan? expected)) - (nan? got) + (and (real? got) (nan? got)) (or (equal? got expected) (and (expected-exception? expected) (expected-exception? got))))