为什么(list + 1 2)在Common Lisp中求值为('(+ 1 2)1 2)

时间:2013-04-11 07:32:38

标签: lisp common-lisp

为什么在Common Lisp(CCL REPL)中评估(list + 1 2)会返回('(+ 1 2) 1 2)


更多:好的,我看到+实际上评估的是最后一个REPL结果,但我仍然有一个问题:这是一个标准的CL REPL事情,让+等于最后的结果,还是特定的Clozure?

1 个答案:

答案 0 :(得分:7)

您会发现,在REPL中,变量*保存最后一个结果,+保存最后一个评估表单。

例如:

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

是的,这些都是标准的,并且在HyperSpec.

如果您希望创建包含符号+的列表而不是其值,则需要引用它,例如:'+(quote +)