1;;;; records-and-setters-test.scm 2 3 4;;; define-record-type with setters 5 6(define-record-type foo 7 (make-foo x y z t) 8 foo? 9 (x get-x) 10 (y get-y set-y) 11 (z get-z (setter get-z)) 12 (t get-t (setter make-foo))) 13 14(let ((f (make-foo 1 2 3 4))) 15 (assert (foo? f)) 16 (assert (= 1 (get-x f))) 17 (assert (= 2 (get-y f))) 18 (set-y f 99) 19 (assert (= 99 (get-y f))) 20 (set! (get-z f) 100) 21 (assert (= 100 (get-z f))) 22 (set! (make-foo f) 1000) 23 (assert (= 1000 (get-t f)))) 24 25(define-record bar 26 a 27 (setter b)) 28 29(let ((b (make-bar 1 2))) 30 (assert (bar? b)) 31 (bar-a-set! b 3) 32 (assert (= 3 (bar-a b))) 33 (setter bar-b) 34 (set! (bar-b b) 4) 35 (assert (= (bar-b b) 4))) 36