使用 REPL

CL-USER> (+ 2 3)
5
CL-USER> (sin 1.5)
0.997495
CL-USER> (mapcar (lambda (x) (+ x 2)) '(1 2 3))
(3 4 5)

評估後列印的結果不僅僅是一個字串:後面有一個完整的 Lisp 物件,可以通過右鍵單擊它並選擇 Inspect 進行檢查。

多行輸入也是可能的:使用 C-j 來換行。Enter-key 將導致評估輸入的表單,如果表單未完成,可能會導致錯誤:

CL-USER> (mapcar (lambda (x y)
                   (declare (ignore y))
                   (* x 2))
                 '(1 2 3)
                 '(:a :b :c))
(2 4 6)

錯誤處理

如果評估導致錯誤:

CL-USER> (/ 3 0)

這將彈出一個帶有以下內容的偵錯程式緩衝區(在 SBCL lisp 中):

arithmetic error DIVISION-BY-ZERO signalled
Operation was /, operands (3 0).
   [Condition of type DIVISION-BY-ZERO]

Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [ABORT] abort thread (#<THREAD "repl-thread" RUNNING {1004FA8033}>)

Backtrace:
  0: (SB-KERNEL::INTEGER-/-INTEGER 3 0)
  1: (/ 3 0)
  2: (SB-INT:SIMPLE-EVAL-IN-LEXENV (/ 3 0) #<NULL-LEXENV>)
  3: (EVAL (/ 3 0))
  4: (SWANK::EVAL-REGION "(/ 3 0) ..)
  5: ((LAMBDA NIL :IN SWANK-REPL::REPL-EVAL))
--- more ---

通過 --- more --- 向下移動游標將導致回溯進一步擴充套件。

在回溯的每一行,按 Enter 將顯示有關特定呼叫的更多資訊(如果可用)。

在重新啟動行上按 Enter 將導致呼叫特定的重新啟動。或者,可以通過數字 012 選擇重啟(在緩衝區中的任何位置按相應的鍵)。預設重啟由星號標記,可以通過按鍵 q退出)呼叫。按 q 將關閉偵錯程式並在 REPL 中顯示以下內容

; Evaluation aborted on #<DIVISION-BY-ZERO {10064CCE43}>.
CL-USER> 

最後,很少,但 Lisp 可能會遇到 Lisp 偵錯程式無法處理的錯誤,在這種情況下,它將進入低階偵錯程式或異常完成。要檢視此類錯誤的原因,請切換到*inferior-lisp*緩衝區。