Common Lisp では、マクロ定義マクロを作成するのは比較的簡単です。たとえば、次のマクロ
(defmacro abbrev (short long)
`(defmacro ,short (&rest args)
`(,',long ,@args)))
別のマクロに展開されるため、マクロ定義マクロです。
今置くと
(abbrev def defun)
私たちのプログラムでは、新しい関数を定義するたびにdef
代わりに書くことができます。defun
もちろん、abbrev
それ以外にも使えます。たとえば、
(abbrev /. lambda)
(/. (x) (+ x 1))
の代わりに書くことができます(lambda (x) (+ x 1))
。良い。(略語の詳細な説明については、http://dunsmor.com/lisp/onlisp/onlisp_20.htmlを参照してください)
さて、私の質問は次のとおりです。
- Racket でマクロ定義マクロを作成できますか?
- できる場合は、どうすればよいですか?(例えば、
abbrev
Racket でマクロに似たものを書く方法は?)