【发布时间】:2010-04-22 16:03:26
【问题描述】:
我有一个相当复杂的 LispWorks Common Lisp 模块,它通过 RDNZL 位于一些 .NET 模块之上。
我需要将它的一些功能公开给其他一些 .NET 应用程序,我不确定在不使用 C# 重写模块的情况下最好(最短)的方法。我知道有一些 CLR Lisp 实现,但大多数似乎没有维护或不完整,而且有很多东西不能在 Scheme 中简单地重写。
是否有任何工具可以公开与 RDNZL 启用的功能相反的功能(.NET -> Common Lisp)?我可以使用 RDNZL 来提供接受 .NET 对象的 DLL 吗?
我正在编辑此内容,以包括一些对 Lisp 感兴趣的人可能会知道它们是否在 Windows 上的选项,以及为什么它们不能完全满足上述要求(或者像您的用户一样,我如何没有充分表达我的要求:)。
- IronScheme - 不错、快速、维护和快速,但它不是 Common Lisp
- ClojureCLR - 不常见的 Lisp;测试版,我需要大约 4 秒来启动(对于长时间运行的应用程序是可以接受的,而不是需要新的实例化然后进行几十次调用的事情)
- LSharp - Not Common Lisp,未维护
- RDNZL - 允许使用 .NET 代码注册 CL 回调委托,但您必须从 CL 开始,没有相对简单的方法(到目前为止我已经能够弄清楚)将 .NET 对象传递到“ C DLL”由您选择的 Common Lisp 实现创建。
- Yarr - 建立在 LSharp 之上(包括 defmacro 和其他一些必需品)。看起来有一段时间没有维护,但可能是目前最好的选择。
【问题讨论】:
-
也许您可以将您的 CL 代码移植到 Clojure 并使用 clojure-clr? :
标签: .net lisp common-lisp