パラメータ用ミニマクロ
gauche.parameter を使うときにちょっと楽できるように。
(define-syntax define-parameter (syntax-rules () ((_ var expr) (define var (make-parameter expr))))) (define-syntax with-parameter (syntax-rules () ((_ (param ...) body ...) (let ((param (param)) ...) body ...))))
たくさんパラメータを定義したり、使ったりするときにはタイピング量を減らせるのと、多少は見やすくなる。
(define-parameter x 1) (define-parameter y 2) (define-parameter z 3) (define (sum) (with-parameter (x y z) (+ x y z)))
展開後。
(define x (make-parameter 1)) (define y (make-parameter 2)) (define z (make-parameter 3)) (define (sum) (let ((x (x)) (y (y)) (z (z))) (+ x y z)))