1(library (yuni miniobj base) 2 (export define-miniobj-typeof define-miniobj-ref define-miniobj-set!) 3 (import (rnrs)) 4 5(define-syntax define-miniobj-typeof 6 (syntax-rules () 7 ((_ name ref0 ref1 ... refnext term) 8 (define-miniobj-ref name ref0 ref1 ... (lambda (obj) (refnext obj term)))) 9 ((_ name ref0 term) 10 (define (name obj) (ref0 obj term))))) 11 12(define-syntax define-miniobj-ref 13 (syntax-rules () 14 ((_ name ref0 ref1 ... refnext term) 15 (define-miniobj-ref name ref0 ref1 ... (lambda (obj slot) (refnext obj slot term)))) 16 ((_ name ref0 term) 17 (define (name obj slot) (ref0 obj slot term))))) 18 19(define-syntax define-miniobj-set! 20 (syntax-rules () 21 ((_ name set0 set1 ... setnext term) 22 (define-miniobj-set! name set0 set1 ... (lambda (obj slot value) (setnext obj slot value term)))) 23 ((_ name set0 term) 24 (define (name obj slot value) (set0 obj slot value term))))) 25) 26