マクロ(2)
30分プログラム、その48。マクロを定義できるようになろう、シリーズ。
Scheme 入門 15. 構文の定義を参考に、when/unless/andを定義してみる。
(define-syntax mac (syntax-rules() ((_ var) (print (macroexpand-1 'var))))) (define-syntax my-when (syntax-rules() ((_ pred b1 ...) (if pred (begin b1 ...))))) (define-syntax my-unless (syntax-rules() ((_ pred b1 ...) (if pred '() (begin b1 ...))))) (define-syntax my-and (syntax-rules() ((_ e) e) ((_ e1 e2 ...) (let1 t e1 (if t (my-and e2 ...) #f)))))
- _はマクロ名になるらしいです
- ...はずるい