Lisp 变量是*、+;,和/或绑定到最近输入的SLIME或Clozure CL?

Lisp 变量是*、+;,和/或绑定到最近输入的SLIME或Clozure CL?,lisp,common-lisp,slime,Lisp,Common Lisp,Slime,当我发现这一点时,我正在粘液中胡闹(与Clozure REPL有关): 看起来变量+、*和/都绑定到最近输入的某个变量,+是输入本身,*是对该输入求值的结果,/是列表中包含的结果 是这样吗?谁对此负责,SLIME还是Clozure?我在粘液手册里找不到任何东西 谢谢 ; SLIME 2010-05-13 CL-USER> + NIL CL-USER> * NIL CL-USER> / (NIL) CL-USER> - - CL-USER> + - CL-USER&g

当我发现这一点时,我正在粘液中胡闹(与Clozure REPL有关):

看起来变量+、*和/都绑定到最近输入的某个变量,+是输入本身,*是对该输入求值的结果,/是列表中包含的结果

是这样吗?谁对此负责,SLIME还是Clozure?我在粘液手册里找不到任何东西

谢谢

; SLIME 2010-05-13
CL-USER> +
NIL
CL-USER> *
NIL
CL-USER> /
(NIL)
CL-USER> -
-
CL-USER> +
-
CL-USER> (list 1 2)
(1 2)
CL-USER> +
(LIST 1 2)
CL-USER> /
((LIST 1 2))
CL-USER> (+ 1 2)
3
CL-USER> /
(3)
CL-USER> *
(3)
CL-USER> (* 1 2)
2
CL-USER> *
2
CL-USER> 

这些都是公共Lisp标准规定的,甚至更多。搜索“变量”。

+

++

++

当顶级循环对表单求值时,变量+被绑定到循环读取的上一个表单。变量++保存先前的值+(即两次交互之前评估的表单),而++++保存先前的值++

-

当顶级循环对表单求值时,变量-绑定到表单本身;也就是说,一旦交互完成,它将被赋予+的值

*

**

***

当顶级循环对表单求值时,变量*绑定到最后一次通过循环打印的结果;也就是说,它是在+中计算表单所产生的值。如果生成了多个值,*仅包含第一个值;*如果生成了零值,则包含nil。变量**保存前一个值*(即两次交互前打印的结果),而*保存前一个值**

/

/

//

当顶级循环对表单求值时,变量/被绑定到上一次循环结束时打印的结果列表;也就是说,它是通过在+中计算表单而生成的所有值的列表。*的值应始终与/的值相同。变量//保存以前的值/(即两次交互前打印的结果),而///保存以前的值//。因此**的值应始终与//的车相同,对于*和//的值也应相同