chibi schemeの低レベルマクロ
Chibiは低レベルマクロの使い方が分からないので割愛。
Chibi schemeはsyntactic closure族なので(nmoshと同じような)explicit renamingが使える。
(import (chibi) (srfi 1)) (define-syntax apply-x-values (er-macro-transformer (lambda (x rename _) (let ((lyst (rename 'list)) (count (cadr x))) (cons lyst (iota count)))))) (display (apply-x-values 100000))
variableとして使わないデータ等はそのまま返せばOK。一般的には、マクロに渡されるrename手続きにシンボルを渡して、"文脈上の"名前を拾って返す。
ちなみに、chibi schemeの場合、listはライブラリに配置されたシンボルでないので、renameする必要も実は無い。
(define-syntax apply-x-values (er-macro-transformer (lambda (x rename _) (let ((count (cadr x))) (cons 'list (iota count))))))
これでも動く。
Chibi schemeはlistの定義の割り切りぶりがすごい。
(define (list . args) args)
まぁ確かにコレでlistだ。。