Racket:缺少来自带有Geiser的Emacs的调试消息

Racket:缺少来自带有Geiser的Emacs的调试消息,emacs,racket,read-eval-print-loop,geiser,Emacs,Racket,Read Eval Print Loop,Geiser,我是使用emacs和geiser的新手。目前,我对它的常规操作没有任何问题,例如编译程序或启动REPL。但我不知道为什么如果我的程序出错,Geiser中的REPL只提供非常有限的信息 例如,我使用了一个可变列表,但意外地使用了assoc而不是massoc,来自Geiser中REPL的错误消息是 install-deriv-package: undefined; cannot reference undefined identifier context...: /Applications

我是使用emacs和geiser的新手。目前,我对它的常规操作没有任何问题,例如编译程序或启动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>) '())))) '())
assoc:不是一个合适的列表:(mcons(mcons'deriv)(mcons(mcons'***#))(mcons(mcons'*#))(mcons(mcons'+#
) '())))) '())
对于前者,我甚至不知道错误在哪里


它与Geiser的配置有关吗?如果是这样,如何使错误消息与DrRacket中的类似?

如果我错了,请更正我,但您的特定问题似乎是
安装deriv软件包在Geiser环境中未定义,但在DrRacket环境中未定义。在任何情况下,在我看来,Geiser REPL、
Geiser编译文件
输出和DrRacket输出中生成的消息都非常相似(至少在可变列表上使用
assoc
而不是
massoc
的情况下):

盖瑟回复错误:

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 w/out错误:

racket@> (massoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
(mcons 3 (mcons 4 '()))
Compiling ~/development/lisp/racket/error_testing.rkt ...


(mcons 3 (mcons 4 '()))
(mcons 3 (mcons 4 '()))
geiser编译文件
错误:

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)))))
DRRACK错误:

(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 w/out错误:

racket@> (massoc 3 (mlist (mlist 1 2) (mlist 3 4) (mlist 5 6)))
(mcons 3 (mcons 4 '()))
Compiling ~/development/lisp/racket/error_testing.rkt ...


(mcons 3 (mcons 4 '()))
(mcons 3 (mcons 4 '()))
正如您所看到的,所有这些输出看起来都非常相似。但是,为了回答您的问题,我认为
geiser编译文件
是这里使用的最佳geiser选项,因为它提供的错误信息比geiser REPL输出稍微多一些。另外,
geiser编译文件
缓冲区默认为
geiser调试模式
,因此这可能对调试有所帮助。最后,您可能还想退房