2

Windows に LispBox をインストールしましたが、問題なく動作しています。ただし、コードのデバッグに問題があります。コードをコンパイルしようとすると、構文エラーなどのエラーが含まれている場合、エラー メッセージ出力 (以下に出力) はあまり役に立ちません。

のコンパイル中に重大なエラーが発生しました

"d:/Jervis/Documents/Programming/LISP/hw1.lisp"
   [Condition of type SIMPLE-ERROR]
  0: (CCL::%COMPILE-FILE "d:/Jervis/Documents/Programming/LISP/hw1.lisp" "d:/Jervis/Documents/Programming/LISP/hw1.wx64fsl" T NIL T T NIL T :DEFER NIL #<BACKEND WIN64 #x21001C6FCD> :DEFAULT NIL 0)
  1: (COMPILE-FILE #P"d:/Jervis/Documents/Programming/LISP/hw1.lisp" :OUTPUT-FILE #P"d:/Jervis/Documents/Programming/LISP/hw1.wx64fsl" :VERBOSE T :PRINT NIL :LOAD NIL :FEATURES NIL :TARGET :WIN64 :SAVE-LOC..
  2: (SWANK-BACKEND:CALL-WITH-COMPILATION-HOOKS #<CCL:COMPILED-LEXICAL-CLOSURE (:INTERNAL SWANK-BACKEND:SWANK-COMPILE-FILE) #x2100C2730F>)
  3: ((:INTERNAL SWANK:COMPILE-FILE-FOR-EMACS))
  • コンパイルエラーの原因となっているコードの行番号を取得する方法を知っている人はいますか?

ここでコンパイラ入力バッファを開くというアドバイスに従おうとしましたが、うまくいきませんでした。(バッファが使用できなかったため、開くことができませんでした)。

何か案は?

4

1 に答える 1

0

最初に明確化: あなたが言及した *Compiler Input* バッファは、Common Lisp や Slime とは何の関係もありません。これは、Emacs Lisp をコンパイルするときに Emacs が遭遇したエラーに関するものです (その内部 Lisp、CL とはまったく異なります)。

あなたの問題(問題を絞り込むためにファイル名/行番号を決定する)について:ファイルに壊れたコードを入力すると(たとえばtest.lisp):

(defun fact (n)
  (if (= 0 n)
  1
  !(* n (facto (1- n)))))

C-c C-k、次にバッファを押してSlime経由でCCLに送信しようとするとtest.lisp、エラーと再起動のリストが表示されます(再起動のリストの下には、取得したものと同様のバックトレースもあります)。0 を押して再起動 0 を選択し、次に 'n' を押して、壊れたコンパイル済みファイルを CCL にロードしないようにします。エラーのあるバッファは、*slime-compilation* という名前のバッファに置き換える必要があります。私の場合は次のものが含まれます。

cd d:/tmp/lispbox-0.7/
2 compiler notes:

test.lisp:2:5:
  warning: Extra arguments in (IF (= 0 N) 1 ! (* N (FACTO (1- N)))) don't match lambda list (CCL::TEST CCL:TRUE &OPTIONAL CCL:FALSE).
  style-warning: Unused lexical variable N

Compilation failed.

、それはあなたが望んでいたもののようです。

手動でインストールした Linux CL セットアップでは、0 再起動を選択する必要はありません。また、「とにかく fasl ファイルをロードする (y/n)」プロンプトを回避するためのスライム設定もあるため、カスタマイズによってエクスペリエンスが向上します。

于 2012-02-09T10:27:33.753 に答える