070-type-predicates.scm (1026B)
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 22 ; procedure? — closures and primitives 23 (if (procedure? car) 0 (sys-exit 12)) 24 (if (procedure? +) 0 (sys-exit 13)) 25 (if (procedure? (lambda (x) x)) 0 (sys-exit 14)) 26 (if (not (procedure? 1)) 0 (sys-exit 15)) 27 (if (not (procedure? 'car)) 0 (sys-exit 16)) 28 (if (not (procedure? '())) 0 (sys-exit 17)) 29 30 (sys-exit 0)