Lispベースのシステムでは、通常、REPL(read eval print loop)から実行中にプログラムを開発します。したがって、それはたくさんのツールを統合します:完了、エディター、コマンドラインインタープリター、デバッガー、...デフォルトはそれを持っていることです。エラーのある式を入力します-いくつかのデバッグコマンドが有効になっている別のREPLレベルにいます。あなたは実際にこの振る舞いを取り除くために何かをしなければなりません。
REPLの概念には2つの異なる意味があります。
Lisp(または他のいくつかの同様の言語)のようなRead EvalPrintLoop。プログラムとデータを読み取り、結果データを評価して印刷します。Pythonはこのようには機能しません。LispのREPLを使用すると、メタプログラミングの方法で直接作業し、生成(コード)、展開のチェック、実際のコードの変換などを行うコードを記述できます。Lispのトップループは読み取り/評価/印刷です。Pythonには、トップループとしてreadstring / Evaluation/printstringのようなものがあります。
コマンドラインインターフェイス。インタラクティブシェル。たとえば、IPythonについてはを参照してください。それをCommonLispのSLIMEと比較してください。
デフォルトモードのPythonのデフォルトシェルは、インタラクティブに使用するにはそれほど強力ではありません。
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
>>>
エラーメッセージが表示され、それだけです。
それをCLISPREPLと比較してください。
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]>
CLISPはLispの条件システムを使用してデバッガREPLに侵入します。それはいくつかの再起動を提示します。エラーコンテキスト内で、新しいREPLは拡張コマンドを提供します。
再起動を使用してみましょう:R1
:
Break 1 [2]> :r1
Use instead of A> 2
4
[3]>
したがって、プログラムのインタラクティブな修復と実行の実行が可能になります...