从Erlang调用Common Lisp代码

时间:2014-05-09 01:18:51

标签: erlang common-lisp

我在erlang中编写服务器,但我已经在常见的lisp(遗传算法)中完成了一些代码。我是全新的二郎,我在书中读到我可以从elrang调用编译语言(如nif,或端口或shell)但我也找到http://lfe.github.io/,所以我需要建议什么是最好的调用方法常见的lisp代码或在lfe中重写?

2 个答案:

答案 0 :(得分:2)

最好的方法取决于您获得的代码以及与之交互的方式。

  • NIF:与函数调用一样快,但Lisp代码中的任何问题都有可能导致Erlang VM崩溃
  • Shell:对你来说可能是最少量的工作而且隔离良好,但调用起来非常昂贵。如果你每分钟只调用一次Lisp,那么就这样做吧。
  • TCP或其他套接字:良好隔离,快速(但比NIF慢)。将Lisp代码作为服务提供可能在其他方面很好。需要一堆写作。
  • LFE:你必须重写你的Lisp代码。 LFE不是Common Lisp,所以你不能只重新编译。

答案 1 :(得分:2)

LFE是一个合适的lisp,但它 CL。因此,如果您想使用LFE,那么您很可能必须修改您的程序。但是,这样做会使得与erlang的交互变得微不足道,因为LFE在同一个VM上与Erlang一起运行,并且界面是透明的。

如果您希望在CL上运行程序,那么最简单的方法是使用端口并通过命令与CL shell进行通信,也可以使用文件进行通信。