070-type-predicates.scm (1139B)
1 ; boolean?, integer?, procedure? — tag-checking predicates. 2 ; 3 ; Per R7RS-small, define-record-type does not expose the type 4 ; descriptor or any cross-type record predicate. record? / 5 ; record-type? are not part of the user-facing API. 6 7 ; boolean? — only #t and #f 8 (if (boolean? #t) 0 (sys-exit 1)) 9 (if (boolean? #f) 0 (sys-exit 2)) 10 (if (not (boolean? 0)) 0 (sys-exit 3)) 11 (if (not (boolean? '())) 0 (sys-exit 4)) 12 (if (not (boolean? 'foo)) 0 (sys-exit 5)) 13 14 ; integer? — fixnums only 15 (if (integer? 0) 0 (sys-exit 6)) 16 (if (integer? 42) 0 (sys-exit 7)) 17 (if (integer? -7) 0 (sys-exit 8)) 18 (if (not (integer? #t)) 0 (sys-exit 9)) 19 (if (not (integer? '(1 2))) 0 (sys-exit 10)) 20 (if (not (integer? 'sym)) 0 (sys-exit 11)) 21 (if (not (integer? #\A)) 0 (sys-exit 18)) 22 (if (char? #\A) 0 (sys-exit 19)) 23 (if (not (char? 65)) 0 (sys-exit 20)) 24 25 ; procedure? — closures and primitives 26 (if (procedure? car) 0 (sys-exit 12)) 27 (if (procedure? +) 0 (sys-exit 13)) 28 (if (procedure? (lambda (x) x)) 0 (sys-exit 14)) 29 (if (not (procedure? 1)) 0 (sys-exit 15)) 30 (if (not (procedure? 'car)) 0 (sys-exit 16)) 31 (if (not (procedure? '())) 0 (sys-exit 17)) 32 33 (sys-exit 0)