<p>在基于Lisp的系统中,通常在程序从REPL(read eval print loop)运行时开发程序。所以它集成了很多工具:完成、编辑器、命令行解释器、调试器。。。默认情况是这样。键入表达式时出错-您处于另一个REPL级别,并启用了一些调试命令。你必须做点什么来摆脱这种行为。</p>
<p>REPL概念有两种不同的含义:</p>
<ul>
<li><p>类似于Lisp(或其他一些类似语言)中的Read Eval Print循环。它读取程序和数据,评估并打印结果数据。Python不是这样工作的。Lisp的REPL允许您以元编程的方式直接工作,编写生成(代码)的代码,检查扩展,转换实际代码等。。Lisp将read/eval/print作为顶层循环。Python的顶部循环类似于readstring/evaluate/printstring。</p></li>
<li><p>命令行界面。交互式外壳。有关<a href="http://ipython.org/ipython-doc/stable/interactive/index.html">IPython</a>的示例,请参见。将其与常见的Lisp的<a href="http://common-lisp.net/project/slime/doc/html/index.html#Top">SLIME</a>进行比较。</p></li>
</ul>
<p>默认模式下Python的默认shell对于交互使用来说并没有那么强大:</p>
<pre><code>Python 2.7.2 (default, Jun 20 2012, 16:23:33)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a+2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>>
</code></pre>
<p>你收到一条错误信息就这样。</p>
<p>将其与CLISP REPL进行比较:</p>
<pre><code>rjmba:~ joswig$ clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/>
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2010
Type :h and hit Enter for context help.
[1]> (+ a 2)
*** - SYSTEM::READ-EVAL-PRINT: variable A has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of A.
STORE-VALUE :R2 Input a new value for A.
ABORT :R3 Abort main loop
Break 1 [2]>
</code></pre>
<p>CLISP使用Lisp的条件系统进入调试器REPL。它显示了一些重启。在错误上下文中,新的REPL提供了扩展命令。</p>
<p>让我们使用<code>:R1</code>重新启动:</p>
<pre><code>Break 1 [2]> :r1
Use instead of A> 2
4
[3]>
</code></pre>
<p>因此,您可以获得程序的交互式修复和执行运行。。。</p>