1;;;; scrutiny-tests-2.scm
2
3
4(define-syntax predicate
5  (syntax-rules ()
6    ((_ pred (proto ...) (nonproto ...))
7     (begin
8       (assert (pred proto)) ...
9       (assert (not (pred nonproto))) ...))))
10
11
12;;;
13
14(let* ((p '(1 . 2))
15       (l (list))
16       (n '())
17       (i 123)
18       (f 12.3)
19       (u (+ i f)))
20  (predicate pair? (p) (l n i f))
21  (predicate list? (l n) (p i f))
22  (predicate null? (n l) (p i f))
23  (predicate fixnum? (i) (f u))
24  (predicate exact? (i) (f u))
25  (predicate flonum? (f u) (i))
26  (predicate inexact? (f u) (i))
27  (predicate number? (i f u) (n)))
28