在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