我是LISP的新手。
我正试图从emacs(在windows上运行的版本23)中调用scheme解释器。我通过告诉emacs M-x load-library
,然后在迷你缓冲区的提示下输入xscheme
来加载xscheme库。加载了库,然后我发出了M-x run-scheme
命令。(我意识到所有这些加载都可以在启动时从.emacs完成,但我目前并不担心。)
到目前为止,一切都很好——*scheme*
缓冲区已经创建,现在我希望能够与方案解释器对话。
然而,当我尝试评估*scheme*
缓冲区(例如(define shoe-size 14)
)中的某个内容时,我会在迷你缓冲区中得到这个Output file descriptor of scheme is closed
消息。
有人知道如何在emacs中解决这个问题吗?
(此外,如何在*scheme*
缓冲区中将主模式设置为REPL?)
谢谢。
尝试将scheme-program-name
变量设置为Scheme解释器的路径。方案缓冲区的主要模式可能只是comint
,除非你切换到像Geiser这样功能更强大的模式,否则你无法对此做太多事情——我建议你这样做。
将此行添加到.emacs
文件:
(setq scheme-program-name "gsi")
(将"gsi"
替换为Scheme解释器的名称。)
然后,您可以使用M-x run-scheme
启动解释器。您可以使用C-x C-e
(在点之前评估sexp)或使用C-M-x
评估您现在所处的sexp来评估代码段。也可以使用C-c C-l
加载文件。
我首先要说的是,我对编程、scheme和SICP非常陌生,但我正在努力完成课程并观看在线讲座
我在Ubuntu 12.10上运行emacs,我真的想让MIT方案在emacs中运行,而不是依赖Edwin
以上提示对我不起作用,但以下是起作用的分步说明:
- 从Ubuntu软件中心安装emacs 24(搜索"emacs"并安装它!)
- 打开终端(ALT+CTRL+t
- 转到您的主目录(
cd ~
)- 在gedit中打开隐藏文件
.emacs
(gedit .emacs
)- 在文件的第一行,键入冒号后面的确切内容:(require'xscheme)
- 将更改保存到
.emacs
- 就是这样
- 转到您的主目录(
现在,您可以在emacs中打开.scm
文件,并使用类似C-x
C-e
的命令。
*由提供的指示http://alexott.net/en/writings/emacs-devenv/EmacsScheme.html#sec14
我的猜测是,这只是一个已知的问题,我仍然不知道如何解决这个问题(这超出了我目前的技能范围),但我得到了一个可能有帮助的宏:刚写完s-exp,你就可以做Cc-Cz
(它称为geiser REPL),然后是C-spc, C-M-b, M-w, C-x-o, C-y
和RET
。
有一个变体(相同,位于写入s-exp之后):C-spc, C-M-b, M-w, C-c Cz, C-y
和RET