【问题标题】:What are the magic variables in CLISP's REPL?CLISP 的 REPL 中有哪些神奇的变量?
【发布时间】:2012-01-31 17:52:02
【问题描述】:

我注意到,当我在 REPL 中键入一个运算符时,它通常会扩展为一个与输入/输出历史有关的值。

我特别注意到:

  • +, ++ ... 展开到之前的输入,
  • *, ** ... 展开到之前的输出,
  • - 展开到当前输入

显然还有更多(/ 扩展为某些东西,但我还没有完全弄清楚)。

我已尝试浏览 clisp 文档,但未成功。

我的问题:

  • 还有哪些神奇的 REPL 变量?他们在做什么?
  • 有没有办法访问第 N 个输入或输出(如 IPython 的 InOut 数组)?

【问题讨论】:

  • 哇!我不知道 IPython 的 InOut 数组,谢谢!
  • 它还有简写_, __ ...表示Out[-1], Out[-2]等。

标签: lisp common-lisp read-eval-print-loop clisp interactive-mode


【解决方案1】:

正如另一个答案中提到的,这些变量记录在 ANSI Common Lisp 标准中。

除此之外,Common Lisp 实现可能还有许多其他功能。具有用户界面的全功能顶级通常称为“Lisp 侦听器”。

CLISP 实现在调试器中提供了额外的命令。请参阅其文档的chapter 25

LispWorks 在 REPL 中有一些扩展,还提供了Listener。以下是一些示例:

交互编号 2,在 CL-USER 包中:

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

【讨论】:

    【解决方案2】:

    REPL 变量记录在environment dictionary of the Hyperspec(搜索“变量”)中。该标准不需要保留三个以上的输入/输出,而且我不知道有任何实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多