14

我肤浅的理解是“swank-clojure”使“Mx slime-connect”成为可能。我的意思是,它提供了与 clojure 服务器的连接,例如“lein swank”。我的理解正确吗?如果不是,swank的目的是什么?

那么,对于其他类似 lisp 的实现,是否有任何“swank-SOMETHING_ELSE”?例如,swank-clisp?

我是否需要 'swank-clojure' 才能将 SLIME/Clojure 与 'Mx slime' 一起使用?

添加

我发现这个链接非常有用。

4

4 回答 4

32

SLIME 和 swank 形成了一个客户端服务器架构来运行和调试 lisp 程序。SLIME 是 emacs 前端,swank 是后端。在它们之间,它们创建一个网络套接字并通过发送消息(S 表达式)进行通信。简而言之,它只是 emacs 和实际 lisp 后端之间的一种 RPC 机制。

slime 和 swank 是分开的,通过网络连接并通过 rpc 消息进行通信的事实意味着它们可以在任何地方。因此,slime 可以连接到远程主机/端口进行 swank。您看到的所有其他形式(lein swank 等)都这样做。他们开始在允许远程连接史莱姆的端口上晃悠。

swank-clojure 是 swank 的 clojure 端口。最初 swank-clojure 带有一个名为 swank-clojure.el 的帮助 elisp 文件。该文件的作用是启用 swank 参数的手动设置,例如类路径、jvm 参数等。由于后来出现了 lein 等其他工具,因此不推荐使用 swank-clojure.el。但它仍然存在于: http: //github.com/vu3rdd/swank-clojure-extra并提供了 Mx swank-clojure-project,它可以在 lein 项目上启动 swank。

应该注意的是,SLIME 起源于(并且仍在积极开发中)Common Lisp。事实上,swank 的 clojure 端口仅具有原始 SLIME/swank 版本所享有的功能的子集。SLIME 存在于 Common Lisp 的所有主要变体中。Scheme48 有部分端口。contrib 目录下有一些部分实现可用。

如果您知道 swank 已经在端口上运行,请使用 slime-connect。如果你只是想在一个项目上使用 slime,swank-clojure-project 和 lein swank 似乎是要走的路。

于 2010-08-23T20:25:14.970 回答
6

swank-clojure.el已弃用。不要使用它。

您需要slime.el并且您需要swank-clojure "1.2.1"在文件中包含您的开发依赖项project.clj

Swank 基本上是您使用 slime 从 emacs 连接的服务器。它从 emacs 传递了你想要由它正在运行的 Lisp 进程运行的内容。

M-x slime-connectlein swank.

于 2010-08-23T19:49:50.790 回答
2

Swank 是 emacs SLIME 和 Macintosh 的 MCLIDE lisp 开发环境等 swank 客户端的服务器对应物。Swank 服务器用于许多 Common Lisp 实现和 Lisp 方言,例如 Clojure 和 Gambit/scheme。

于 2010-08-24T00:46:47.787 回答
1

我的理解是slime是emacs部分(客户端),swank是常见的lisp部分(服务器),swank-clojure是swank服务器的clojure实现,不是原来的。

于 2010-08-23T19:49:13.687 回答