(define-syntax define-cbr-as-cbv
   (syntax-rules ()
      ; The first case is for generating one get and set
      ((define-cbr-as-cbv do-f (arg0 arg ...)
         (gens ...) body)
       (define-cbr-as-cbv do-f (arg ...)
         (gens ... (arg0 get set)) body))
      ; The second case finishes the expansion
      ((define-cbr-as-cbv do-f ()
         ((arg get set) ...) body)
       (define (do-f get ... set ...)
         (define-get/set-var arg get set) ...
         body)                                )))

Example 11: define-cbr-as-cbv macro.

Back to Article