- 91 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/30(日) 00:28:17.17 ]
- define-macro は RnRS で提供して無いけど、
R6RS では簡単に define-macro を実装できる。 典型的な実装例はこんな感じ。 (define-syntax define-macro (lambda (stx) (syntax-case stx () ((_ (macro . args) body) #'(define-macro macro (lambda args body))) ((_ macro transformer) #'(define-syntax macro (lambda(stx2) (syntax-case stx2 () ((k args (... ...)) (let ((v (syntax->datum #'(args (... ...))))) (datum->syntax #'k (apply transformer v))))))))))) これなら >>89 のようなことは問題なく出来る。 でもまぁ Scheme 的には let-syntax を使う方が楽ではあるだろうね。
|

|