当我发现这个时,我在SLIME(连接Clozure REPL)中乱搞:
看起来变量+,*和/都绑定了最近输入的某些变化,+是输入本身,*是评估输入的结果,而/是列表中包含的结果。 / p>
这是对的吗?谁对此负责,SLIME或Clozure?我在SLIME手册中找不到任何内容。
谢谢!
; 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>
答案 0 :(得分:4)
Common Lisp标准指定了所有这些,甚至更多。在the environment dictionary搜索“变量”。
答案 1 :(得分:1)
+
++
+++
当顶层循环正在评估表单时,变量+绑定到循环读取的前一个表单。变量++保存前一个值+(即,前两个交互评估的形式),+++保持以前的++值。
-
当顶级循环正在评估表单时,变量 - 绑定到表单本身;也就是说,一旦完成这种交互,它就是给予+的值。
*
**
***
当顶级循环正在评估表单时,变量*绑定到最后一次循环结束时打印的结果;也就是说,它是通过在+中评估表单而产生的值。如果生成了多个值,*仅包含第一个值; *如果产生零值,则包含nil。变量**保存前一个值*(即结果打印两个交互前), * 保持前一个值**。
/
//
///
当顶级循环正在评估表单时,变量/绑定到上一次循环结束时打印的结果列表;也就是说,它是通过在+中评估表单而生成的所有值的列表。 *的值应始终与/的值相同。变量//保存/的前一个值(即前两个交互打印的结果),///保持前一个值//。因此**的值应该始终与//的车相同,对于 * 和///.