9

我决定重新使用 LISP(自从我的 AI 课程以来就没有使用它)以更熟悉一般的函数式编程,所以我下载了 Lisp In A Box(我们实际上在之前的课程中使用过),它附带CLISP 和 Emacs。

当我运行它时,它说:

连接到 1617 端口。拿这个 REPL,兄弟,希望它对你有好处。

什么?所以我更仔细地查看了 Lisp In A Box 网页,发现了这个:

SLIME 是 Emacs 的集成开发环境,它通过网络套接字与 Common Lisp 实现接口。很多关于 SLIME 的信息都可以在 CLiki 的 SLIME 节点上找到。SLIME 手册以 PDF 格式在线提供。

我有点理解 SLIME 是什么(某种对 emacs 的扩展,对吗?)但是为什么文本编辑器会启动自己的服务器并连接到它呢?

4

4 回答 4

11

目的是让 Lisp 可以并行运行。

Slime 连接到会话,然后您可以从许多不同的窗口(甚至机器)拥有相同的环境、定义等。例如,这意味着您可以启动应用程序并即时调试它。

有关详细信息,请查看此博客

于 2008-11-21T16:54:06.077 回答
10

套接字比管道更灵活。一方面,SLIME 允许您连接到网络上的 Swank 服务器,这对于在具有长时间运行进程的远程机器(例如 Web 服务器)上进行实时修复非常有用。鉴于此,为什么要通过抽象通信以同时支持管道和套接字来增加另一层复杂性?无论如何,管道并不比套接字更容易编程。

于 2008-11-21T21:01:01.400 回答
2

好吧,Slime 启动 Lisp 进程,为您提供集成开发环境。这样您就可以即时测试和调试代码,还可以检查对象。我认为选择带有套接字的架构是为了在不同的 lisp(顺便说一句,Slime 还支持ClojureMIT Scheme)和 OS-es(Slime 也适用于 Windows)之间具有更好的可移植性。它还允许跨平台开发——您可以从 Emacs 在目标架构上测试您的软件。

所以我认为,这个决定很棒,你只是不应该将 swank(Slime 后端)放在生产服务器上。

于 2008-11-22T23:21:04.250 回答
1

您将获得一个并行运行的 REPL(读取-评估-打印-循环),以便您可以在编辑器中即时编译和测试代码片段。《Practical Common Lisp》(网络上免费提供)对此有很好的解释,是一本非常好的学习 Lisp 的书。

于 2008-11-21T17:38:40.620 回答