在 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中编写类似于 宏的东西?)