什么是Scheme语言中最接近Slime的东西?

45

我大部分的开发工作都是在Common Lisp中进行的,但有时候我想要切换到Scheme(例如阅读《Lisp in Small Pieces》时、当我想要玩转continuations时或者当我想要在Gauche中进行一些脚本编写时)。在这种情况下,我最不适应的地方是没有Slime(是的,你可以称呼我为一个上瘾者)。

那么Scheme中最接近Slime的东西是什么?特别是,我最感兴趣的是:

  • Emacs集成(这一点很明显;)
  • 良好的tab自动完成功能(理想情况下,c-w-c-c TAB能够扩展到call-with-current-continuation)。它甚至可以基于符号表(即它不必立即注意到我在let中定义的函数)。
  • 在minibuffer中提示函数参数(如果我键入了(map |)(光标位置由|指示),我希望在minibuffer中看到(map predicate . lists)
  • 向解释器发送表格达式
  • 与调试器的集成

按重要性降序排列了这些功能。

我选择的Scheme实现是:

  • MzScheme
  • Ikarus
  • Gauche
  • Bigloo
  • Chicken

希望至少能与它们中的一些实现兼容。


1
一个注释而非答案——你可能已经知道了——但是DrScheme IDE具有emacs键绑定、制表符自动完成(虽然不是用tab键)、集成文档、调试器和一堆其他工具。 - Stephen
9个回答

16

SLIME的contrib目录中似乎有MIT Scheme和Kawa的SWANK实现。


11

9

7
一位评论者表示:“DrScheme IDE 具有 Emacs 的快捷键”,它是一个备受推崇的 IDE,具有您明确列出的许多功能。此外,Emacs 的 scheme-mode 提供了 SLIME 的一些功能,包括集成的 REPL、将表单发送到该 REPL 以及加载完整文件的能力。据我所知,对于您列出的 scheme,通常没有相当的功能,例如远程连接到正在运行的映像(而不是在 Emacs 缓冲区中的 scheme repl)或调试器集成。

7

对于我的mzscheme工作,我通常使用cmuscheme + quack,在开发过程中提供了几乎我所需的所有功能。

Bigloo带有非常强大的bee-mode。

而对于gauche,您可以使用GCA包,它提供名称完成、函数描述显示和代码模板插入。

更新:我在我的网站上发布了一篇关于Scheme + Emacs集成的文章


6
你可以使用swank-chicken将Chicken Scheme与slime配合使用。
我建议看一下geiser模式,但它目前仅支持Racket和Guile,而这两者并不在你的列表中。

目前,Geiser声称支持的不仅仅是Racket和Guile:https://github.com/jaor/geiser#requirements。这也在@haziz的回答中提到:https://dev59.com/AXVD5IYBdhLWcg3wBm9h#28998868。 - GDP2

6

1
当然,我见过Slime48。但是,(a) 它只能与Scheme48一起使用,(b) 只能与旧版本的Scheme 48一起使用。不过,你说得对,我应该在问题中提到我选择的Scheme实现(我已经进行了适当的编辑)。 - Ryszard Szopa

4

我没有使用过它,但你可以尝试使用Quackmzscheme

然而,SLIME非常好用。在SWANK这一端有很多好处。


0
现在有一个适用于各种Scheme的叫做r7rs-swank的Slime后端。

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