Lisp Scheme Part33
■ このスレッドは過去ログ倉庫に格納されています
0091SCHEME餃子 ◆8X2XSCHEME
2011/10/30(日) 00:28:17.17R6RS では簡単に 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 を使う方が楽ではあるだろうね。
■ このスレッドは過去ログ倉庫に格納されています