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

Neu*_*onQ 5 lisp common-lisp

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


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

jwm*_*wmc 7

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

例如:

> (+ 1 2)
  => 3
> +
  => (+ 1 2)
> (+ 2 3)
  => 5
> *
  => 5
Run Code Online (Sandbox Code Playgroud)

是的,这些是标准的,在HyperSpec中.

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

  • 另外,定义了`**`,`***`,`++`和`+++`,允许你引用当前的两个值`*`和`+`. (2认同)