Previous: Void Function, Up: Variables [Contents][Index]
値がバインドされていないシンボルの評価を試みると、エラーメッセージが表示されます。2と2の加算の例で試してみましょう。以下の式の+
の直後、1つ目の2の前にカーソルを置いてC-x
C-eをタイプしてください:
(+ 2 2)
GNU Emacs 22では以下のようなメッセージがプリントされた*Backtrace*バッファーが表示されるでしょう:
---------- Buffer: *Backtrace* ---------- Debugger entered--Lisp error: (void-variable +) eval(+) elisp--eval-last-sexp(nil) eval-last-sexp(nil) funcall-interactively(eval-last-sexp nil) call-interactively(eval-last-sexp nil nil) command-execute(eval-last-sexp) ---------- Buffer: *Backtrace* ----------
(繰り返しになりますが、*Backtrace*バッファーでqをタイプすればデバッガを閉じることができます。)
このバックトレースは最初に見た‘Debugger entered--Lisp error: (void-function this)’というエラーメッセージとは異なります。最初のエラーメッセージは関数(‘this’という単語)に定義がないというものでしたが、今回は関数に変数としての値がないというエラーメッセージです。
今回はLispインタープリターに+
を評価させて、関数定義ではなく変数の値を探してみました。これは前の例のように閉じカッコの後ではなく、シンボルの直後にカーソルを配置することによって行われたのです。これによりLispインタープリターが前にあるS式、この場合は+
自体を評価したのです。
+
にはバインドされた値がないので、変数としてのシンボルの値がない(void)というエラーメッセージが報告されたのです。