我注意到当我在REPL中键入运算符时,它通常会扩展为与输入/输出历史有关的值。
具体来说,我注意到了:
+
,++
...展开到之前的输入,*
,**
...展开到以前的输出,-
展开到当前输入显然有更多(/
扩展到某些东西,但我还没有完全弄清楚。)
我已尝试浏览clisp文档,但未成功。
我的问题:
In
和Out
数组)?答案 0 :(得分:7)
REPL变量记录在environment dictionary of the Hyperspec中(搜索“变量”)。该标准不需要保留比三个更多的输入/输出,我不知道有任何实现它。
答案 1 :(得分:3)
如其他答案中所述,这些变量记录在ANSI Common Lisp标准中。
除此之外,Common Lisp实现可能还有许多其他功能。带有用户界面的全功能顶级通常称为“Lisp监听器”。
CLISP实现在调试器中提供了其他命令。请参阅其文档的chapter 25。
LispWorks在REPL中有一些扩展,还提供Listener。以下是一些例子:
CL-USER包中的交互号码2:
CL-USER 2 > (* 3 4)
12
同样,但我们可以省略外括号:
CL-USER 3 > * 3 4
12
让我们重做互动2:
CL-USER 4 > :redo 2
(* 3 4)
12
让我们重做交互2,但是使用除法而不是乘法:
CL-USER 5 > :use / * 2
(/ 3 4)
3/4
具有命令,输出历史或类似功能等扩展的其他实现例如是Allegro CL和Clozure CL。
SLIME提供了基于GNU Emacs的Common Lisp开发环境,还提供了扩展的REPL。