diff --git a/src/ikarus.boot b/src/ikarus.boot index b9a98c7..e76653a 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.predicates.ss b/src/ikarus.predicates.ss index d59d922..ea8f48d 100644 --- a/src/ikarus.predicates.ss +++ b/src/ikarus.predicates.ss @@ -5,7 +5,8 @@ integer? exact? inexact? eof-object? bwp-object? immediate? boolean? char? vector? bytevector? string? procedure? null? pair? symbol? code? not weak-pair? eq? eqv? equal? boolean=? - symbol=? finite? infinite? nan?) + symbol=? finite? infinite? nan? real-valued? + rational-valued? integer-valued?) (import (except (ikarus) fixnum? flonum? bignum? ratnum? number? complex? real? @@ -13,7 +14,8 @@ immediate? boolean? char? vector? bytevector? string? procedure? null? pair? weak-pair? symbol? code? not eq? eqv? equal? port? input-port? output-port? boolean=? symbol=? - finite? infinite? nan?) + finite? infinite? nan? real-valued? rational-valued? + integer-valued?) (ikarus system $fx) (ikarus system $flonums) (ikarus system $pairs) @@ -71,7 +73,10 @@ (define real? (lambda (x) (number? x))) - + + (define real-valued? + (lambda (x) (number? x))) + (define rational? (lambda (x) (cond @@ -79,7 +84,10 @@ [(sys:bignum? x) #t] [(sys:ratnum? x) #t] [(sys:flonum? x) ($flonum-rational? x)] - [else (error 'rational? "~s is not a number" x)]))) + [else #f]))) + + (define rational-valued? + (lambda (x) (rational? x))) (define integer? (lambda (x) @@ -90,6 +98,9 @@ [(sys:flonum? x) ($flonum-integer? x)] [else #f]))) + (define integer-valued? + (lambda (x) (integer? x))) + (define exact? (lambda (x) (cond diff --git a/src/makefile.ss b/src/makefile.ss index 8407b4c..87baa43 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -510,6 +510,9 @@ [ratnum? i] [integer? i r] [real? i r] + [integer-valued? i] + [real-valued? i] + [rational-valued? i] [flinteger? i] [flfinite? i] [flinfinite? i] diff --git a/src/todo-r6rs.ss b/src/todo-r6rs.ss index dbae4bb..db4c38c 100755 --- a/src/todo-r6rs.ss +++ b/src/todo-r6rs.ss @@ -160,7 +160,7 @@ [inexact? C ba se] [infinite? C ba] [integer->char C ba se] - [integer-valued? S ba] + [integer-valued? C ba] [integer? C ba se] [lcm C ba se] [length C ba se] @@ -190,11 +190,11 @@ [pair? C ba se] [positive? C ba se] [procedure? C ba se] - [rational-valued? S ba] + [rational-valued? C ba] [rational? C ba se] [rationalize C ba se] [real-part D ba se] - [real-valued? S ba] + [real-valued? C ba] [real? C ba se] [reverse C ba se] [round C ba se]