我試圖使用case語句使一些代碼更具可讀性。它似乎是一系列if語句,但由於某些原因,case語句總是接受一個比較,即使它不是真的。有人可以澄清爲什麼會發生這種行爲?簡單的Lisp案例語句問題 - 與無比較的問題
實施例:
> (case 'a
(nil nil)
(otherwise 'b))
NIL
> (case 'a
('a 'b)
(otherwise nil))
B
在上述例子中,第一個實例返回nil,即使「明確不是nil。試圖做同樣的事情,如果語句表現爲我所期望的:
> (if (eq 'a nil) nil 'b)
B
> (if (eq 'a 'a) 'b nil)
B
我假設有關於case語句我不明白有些行爲。任何幫助,將不勝感激。
編輯: 只是爲了澄清,我知道'一個不會被評估。我只是嘲笑這個例子,以創造一種情況,其中案例陳述的目標絕對不是零。
我正在使用xlisp-plus,但我將嘗試一個真正的clisp安裝並查看它的行爲是否有所不同。
編輯(多一次): 安裝CLISP,它在那裏工作得很好。調查爲什麼xlisp不同是不值得的麻煩。感謝大家的理智檢查。
真奇怪。我剛剛在GNU Common Lisp 2.6.7中嘗試了第一種情況下的表達式,並且(如預期的那樣)評估爲B. – 2011-05-23 14:00:17
「xlisp」是來自[網頁](http://www.xlisp。)的重要信息。 org /):「XLISP 3.0是Lisp的** Scheme **方言的超集」 – 2011-05-23 14:34:14