【发布时间】:2010-12-21 22:25:15
【问题描述】:
一点背景知识,我是一个完全 lisp 的菜鸟,几周前才开始,但多年来我一直在使用其他语言进行开发。逻辑没问题,口齿不清,有问题。
我正在尝试编写一个宏,它将为我定义两个 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 风格指南:mumble.net/~campbell/scheme/style.txt
-
非常同意查看 Lisp 样式指南的建议。本章有关 PCL 的内容可能有助于消除您对宏如何工作的一些误解。 gigamonkeys.com/book/macros-defining-your-own.html
-
感谢您的链接。会检查他们
标签: macros lisp common-lisp