在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)
现在,我的问题是:
- 我可以写在球拍宏定义宏?
- 如果可以,该怎么做? (例如,如何在球拍中写入类似于
abbrev
宏的东西?)
你反过来你的宏参数,应该先来。 – uselpa 2014-10-27 21:51:55
我纠正了我的问题。坦克! – 2014-10-27 22:00:30