パラメータ用ミニマクロ

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)))