4
我盯着Steele的Common Lisp語言直到我臉色蒼白,仍然有這個問題。如果我編譯:如何讓Lisp編譯器忽略(標籤變量)函數?
(defun x()
(labels ((y()))
5))
(princ (x))
(terpri)
發生這種情況:
home:~/clisp/experiments$ clisp -c -q x.lisp
;; Compiling file /u/home/clisp/experiments/x.lisp ...
WARNING in lines 1..3 :
function X-Y is not used.
Misspelled or missing IGNORE declaration?
;; Wrote file /u/home/clisp/experiments/x.fas
0 errors, 1 warning
home:~/clisp/experiments$
很公平。那麼我該如何讓編譯器忽略函數y?我嘗試這樣做:
(defun x()
(labels (#+ignore(y()))
5))
(princ (x))
(terpri)
和它的工作:
home:~/clisp/experiments$ clisp -c -q y.lisp
;; Compiling file /u/home/clisp/experiments/y.lisp ...
;; Wrote file /u/home/clisp/experiments/y.fas
0 errors, 0 warnings
home:~/clisp/experiments$
但不知何故,我不認爲這是什麼警告提示我做的。
我該怎麼辦?
僅供參考,'#+ ignore'可讓讀者跳過整個下一個表格(當然,除非'* features *'中有'ignore'), 。 – Svante 2012-02-26 22:47:29
Ed Zachary。那是我的邪惡計劃。但是,下面答案中列出的好計劃佔了上風。 :) – 2012-02-27 00:43:22
CLtl和CLtl2都是過時的書籍,只會將它們推薦給對lisp歷史感興趣的人,而不是用作參考或學習材料。對於現代ANSI常見的lisp閱讀,我會推薦Peter Seibel的Practical Common Lisp和Conrad Barski的Lisp Land。 – 2012-03-02 13:38:32