Common Lisp为什么(列表+ 1 2)评估为('(+ 1 2)1 2)
问题描述:
Common Lisp(CCL REPL)中的评估(list + 1 2)
为什么返回('(+ 1 2) 1 2)
?Common Lisp为什么(列表+ 1 2)评估为('(+ 1 2)1 2)
更多:OK,我看到+
实际计算结果为最后REPL结果,但我仍然有一个问题:这是一个标准的CL REPL的东西,有+
等于最后的结果,或者是它Clozure具体?
答
您会发现,在REPL中,变量*
保存最后一个结果,并且+
保存上次评估的表单。
例如:
> (+ 1 2)
=> 3
> +
=> (+ 1 2)
> (+ 2 3)
=> 5
> *
=> 5
是的,这些都是标准的,并且在HyperSpec.
如果你想创建一个包含符号+
一个列表,而不是它的价值,你就需要引用它如此:'+
或(quote +)
。
+2
此外,'**','***','++'和'+++ '被定义,允许你引用当前之前的'*'和'+'这两个值。 – Vatine 2013-04-11 12:12:28
Common Lisp Hyperspec是Common Lisp语言的极好参考。它有一个参考。即使是非字母符号:http://www.lispworks.com/documentation/HyperSpec/Front/X_Alph_9.htm – 2013-04-11 08:23:02