2013-04-11 98 views
5

Common Lisp(CCL REPL)中的評估(list + 1 2)爲什麼返回('(+ 1 2) 1 2)Common Lisp爲什麼(列表+ 1 2)評估爲('(+ 1 2)1 2)


更多:OK,我看到+實際計算結果爲最後REPL結果,但我仍然有一個問題:這是一個標準的CL REPL的東西,有+等於最後的結果,或者是它Clozure具體?

+2

Common Lisp Hyperspec是Common Lisp語言的極好參考。它有一個參考。即使是非字母符號:http://www.lispworks.com/documentation/HyperSpec/Front/X_Alph_9.htm – 2013-04-11 08:23:02

回答

7

您會發現,在REPL中,變量*保存最後一個結果,並且+保存上次評估的表單。

例如:

> (+ 1 2) 
    => 3 
> + 
    => (+ 1 2) 
> (+ 2 3) 
    => 5 
> * 
    => 5 

是的,這些都是標準的,並且在HyperSpec.

如果你想創建一個包含符號+一個列表,而不是它的價值,你就需要引用它如此:'+(quote +)

+2

此外,'**','***','++'和'+++ '被定義,允許你引用當前之前的'*'和'+'這兩個值。 – Vatine 2013-04-11 12:12:28