aboutsummaryrefslogtreecommitdiffstats
path: root/lib/SAHP/internal-chicken.scm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2025-02-27 16:54:43 -0500
committerGravatar Peter McGoron 2025-02-27 16:54:43 -0500
commitbca4e706553b4255ccf42d219b6f578330bb75fa (patch)
treeec784831ef3b195cd6426f94449fdff138035920 /lib/SAHP/internal-chicken.scm
parentrename (diff)
reorganize to remove subtype inheritance
Diffstat (limited to 'lib/SAHP/internal-chicken.scm')
-rw-r--r--lib/SAHP/internal-chicken.scm33
1 files changed, 19 insertions, 14 deletions
diff --git a/lib/SAHP/internal-chicken.scm b/lib/SAHP/internal-chicken.scm
index 992d98f..e5392a2 100644
--- a/lib/SAHP/internal-chicken.scm
+++ b/lib/SAHP/internal-chicken.scm
@@ -17,12 +17,11 @@
(define (type-of x)
(cond
- ((exact-integer? x) 'exact-integer)
- ((integer? x) 'integer)
- ((rational? x) 'rational)
- ((real? x) 'real)
- ((complex? x) 'complex)
- ((number? x) 'number)
+ ((fixnum? x) 'fixnum)
+ ((bignum? x) 'bignum)
+ ((flonum? x) 'flonum)
+ ((cplxnum? x) 'cplxnum)
+ ((ratnum? x) 'ratnum)
((boolean? x) 'boolean)
((char? x) 'char)
((null? x) 'null)
@@ -37,11 +36,17 @@
((record-instance? x) (record-instance-type x))
(else (error "cannot derive type of" x))))
-(define (subtypes type)
- (case type
- ((number) '(complex))
- ((complex) '(real))
- ((real) '(rational))
- ((rational) '(integer))
- ((integer) '(exact-integer))
- (else '())))
+(define all-exact-integers
+ '(fixnum bignum))
+
+(define all-exact-rationals
+ `(,all-exact-integers ratnum))
+
+(define all-reals
+ `(,all-exact-rationals flonum))
+
+(define all-complex
+ `(,all-reals cplxnum))
+
+(define all-numbers all-complex)
+