【发布时间】:2011-05-12 16:05:27
【问题描述】:
感谢common lisp: how can a macro define other methods/macros with programmatically generated names? 上的先前答案,我有一个定义辅助函数的宏(实际上我有一个宏,我最喜欢的 lisp-newbie-hammer)。但是在这个宏里面,有一些东西决定了辅助函数是否需要接受一个特定的参数。所以我有一个具有几乎相同分支的 if 语句——在一个分支下,我将 ,var 放在生成函数的 lambda 列表中。在另一个分支下,我省略了 ,var。 (我正在为非程序员编写 DSL,所以我不希望他们看到 &optional 之类的东西)
有没有办法避免在这里出现基本上重复的代码?如果我将 var 设置为“”,那么“”会出现在我生成的 defun 的 lambda 列表中。如果我将 var 设置为 nil,则会出现 NIL。
是否有一个我可以使用的值,使得 ,var 评估为完全没有,眨眼不存在? (出于哲学兴趣,不应该有一个吗?)
【问题讨论】:
标签: macros common-lisp argument-passing