Common Lisp宏变量扩展
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Common Lisp宏变量扩展相关的知识,希望对你有一定的参考价值。
(defmacro foo (x)
`(defun ,xt ()
(format t "hullo")))
(foo bar)
不会定义函数bart
,因为,xt
被读作变量xt
而不是变量x
加上t
。但有没有办法通过提供参数bart
来获得函数bar
?
答案
您需要创建函数名称(然后是一个字符串),然后将其转换为符号,例如:
(defmacro foo (x)
`(defun ,(intern (format nil "~aT" x)) ()
(format t "hullo")))
然后
? (foo bar)
BART
? (bart)
hullo
NIL
以上是关于Common Lisp宏变量扩展的主要内容,如果未能解决你的问题,请参考以下文章