Emacs中的Lisp方言Scheme

5

我该如何让EMACS的Lisp解释器使用Scheme LISP方言。我正在学习SICP书,对EMACS还很陌生(刚刚学会导航和文件访问命令)。


1
你的意思是什么?你是说在Emacs中运行一个Scheme解释器吗?还是说用Scheme来控制Emacs?第一个很容易,但第二个不是那么简单。 - Joel J. Adamson
5个回答

13
要做SICP,你应该使用外部的scheme解释器,因为Emacs Lisp与Scheme不同,并且还没有正确的scheme实现在Emacs Lisp上创建。另一个你应该使用外部scheme解释器的原因是执行速度。
简单的解决方案是现在使用Racket
  • 从Racket网站下载并安装scheme。

  • 然后将变量scheme-program-name配置为值mzscheme

  • 最后运行命令run-scheme:它将在*scheme*缓冲区中运行mzscheme进程。

*scheme*缓冲区使用inferior-scheme-mode主模式,定义以下键:

C-c C-k scheme-compile-file

C-c C-l scheme-load-file

C-x C-e scheme-send-last-sexp

C-M-x scheme-send-definition


7
Jerome的回答是一个很好的简单入门方式。如果您计划通过SICP完成更长的练习,我强烈建议安装Quack,这是一个Emacs包,提供了许多有用的功能,用于格式化、编辑和运行Scheme代码。它是事实上的标准。
您仍然需要独立安装您喜欢的Scheme方言(我在这里也建议Racket),然后使用Emacs与其通信。 此页面这个页面可能会帮助您设置和使用Emacs进行此目的的其他资源。

1

1

你不能直接这样做。一般情况下,人们会生成一个 scheme 进程,然后直接与其通信。

请参阅 external-lisp 的文档以了解如何操作,以及 Emacs Wiki page for Scheme

好的,我说错了,貌似有一些人已经在 Emacs Lisp 上编写了 Scheme 解释器(可以看上面的维基链接),但它们并不是完整功能的 Scheme。


1

你不能这样做。GNU Emacs LISP已经内置在GNU Emacs中,而且GNU Emacs的很多部分都是用GNU Emacs LISP编写的。如果你改变了内置的LISP解释器,那么Emacs就会出现大量错误。

GNU/MIT Scheme包括Edwin编辑器,它是一个类似于Emacs的编辑器,用Scheme编写。你可以尝试使用它来代替GNU Emacs。

另一个人建议启动一个Scheme进程并与之通信,这似乎是更好的想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接