位背景,我是一個總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