位背景,我是一个总Lisp noob,几个星期前才开始,但我一直在开发其他langs多年。逻辑没有问题,lisp,问题。lisp defclass宏问题
我想写一个宏,它将定义两个clsql类为我解决库问题。我希望这些类被命名为x
和`x-insert``,因此在宏中我希望宏来计算x-insert的符号名称,但是我很难做到这一点。我的尝试在下面,但我对两件事感到困惑。
如何获取它来创建类名称。如果我删除了,class -insert
中的空格,那么我不会理解,所以我认为我错过了一些简单的方法来告诉它忽略空格,并将名称创建为单个单词,第二个问题是获取它创建两个类,而不是一个,因为它只能扩展宏的最后部分,而不是使用宏扩展所能看到的。
也许我会完全错误地解决这个问题,所以请随意将我踢向正确的方向。
(defmacro gen-pair (class base-slots pkey-slot base-table)
`(clsql:def-view-class ,class -insert()
(
,base-slots
)
(:base-table ,base-table)
)
`(clsql:def-view-class ,class (,class -insert)
(
,pkey-slot
)
(:base-table ,base-table)
)
)
你可能想看看这个lisp风格指南,而你在它:http://mumble.net/~campbell/scheme/style。txt – Shaun 2010-12-22 11:47:04
非常同意看着Lisp风格指南的建议。关于PCL的这一章可能有助于澄清您对宏如何工作的一些误解。 http://www.gigamonkeys.com/book/macros-defining-your-own.html – asm 2010-12-22 12:31:33