2

私はgeiserでemacsを使用する初心者です。現在、プログラムのコンパイルやREPLの起動など、通常の動作に問題はありません。しかし、私のプログラムが失敗した場合、Geiser 内の REPL が非常に限られた情報しか提供しない理由がわかりません。

たとえば、私は変更可能なリストを使用していますが、誤ってassocではなく使用massocしています。Geiser の REPL からのエラー メッセージは次のとおりです。

install-deriv-package: undefined;
cannot reference undefined identifier
  context...:
   /Applications/Racket v6.0.1/collects/racket/private/misc.rkt:87:7

ただし、DrRacket の REPL では、エラー メッセージがよりわかりやすくなります。

assoc: not a proper list: (mcons (mcons 'deriv (mcons (mcons '** #<procedure:deriv-
exponential>) (mcons (mcons '* #<procedure:deriv-product>) (mcons (mcons '+ #
<procedure:deriv-sum>) '())))) '())

前者の場合は、どこが間違っているのかさえわかりません。

Geiser の構成と関係がありますか? もしそうなら、どうすれば DrRacket のようなエラー メッセージを表示できますか?

4

1 に答える 1

0

私が間違っている場合は修正してください。ただし、特定の問題はinstall-deriv-package 、Geiser 環境では未定義であるが、DrRacket 環境では未定義ではないという問題のようです。いずれにせよ、Geiser REPL、geiser-compile-file出力、および DrRacket の出力で生成されたメッセージは非常に似ているように思えます (少なくとも、変更可能なリストassocではなく使用する場合)。massoc

Geiser REPL エラー:

racket@> (assoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
assoc: not a proper list: (mcons (mcons 1 (mcons 2)) (mcons (mcons 3 (mcons 4)) (mcons (mcons 5 (mcons 6)))))
  context...:
   /Applications/Racket v6.5/collects/racket/private/misc.rkt:87:7

エラーなしの Geiser REPL:

racket@> (massoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
(mcons 3 (mcons 4 '()))

geiser-compile-fileエラー:

Compiling ~/development/lisp/racket/error_testing.rkt ...


Error: struct:exn:fail:contract <- THIS TEXT IS ACTUALLY LINKED TO THE GEISER DOCS PAGE

assoc: not a proper list: (mcons (mcons 1 (mcons 2)) (mcons (mcons 3 (mcons 4)) (mcons (mcons 5 (mcons 6)))))

geiser-compile-fileエラーなし:

Compiling ~/development/lisp/racket/error_testing.rkt ...


(mcons 3 (mcons 4 '()))

DrRacket エラー:

(assoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
. . assoc: not a proper list: (mcons (mcons 1 (mcons 2 '())) (mcons (mcons 3 (mcons 4 '())) (mcons (mcons 5 (mcons 6 '())) '())))

DrRacket エラーなし:

(mcons 3 (mcons 4 '()))

ご覧のとおり、これらの出力はすべて似通っているように見えます。geiser-compile-fileただし、質問に答えるには、Geiser REPL 出力よりもエラーに関する情報がわずかに多いため、ここで使用するのが最適な Geiser オプションだと思います。また、geiser-compile-fileバッファのデフォルトはgeiser-debug-modeであるため、デバッグに多少役立つ場合があります。最後に、Geiser サイトのこのセクションも参照してください。

于 2016-05-10T04:39:58.063 に答える