Lisp In A Box - 为什么要启动服务器?

时间:2008-11-21 16:51:38

标签: emacs lisp slime lisp-in-a-box

我已经决定回到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 个答案:

答案 0 :(得分:11)

目的是让Lisp并行运行。

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

有关详细信息,请查看this blog

答案 1 :(得分:10)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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