首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.NET连接到公共Lisp

将.NET连接到公共Lisp
EN

Stack Overflow用户
提问于 2010-04-22 16:03:26
回答 2查看 789关注 0票数 8

我有一个相当复杂的LispWorks公共Lisp模块,它通过RDNZL位于一些.NET模块之上。

我已经发现,我需要向其他一些.NET应用程序公开它的一些功能,而且我不确定在不用C#重写模块的情况下最好(最短)的方法来解决这个问题。我知道有一些CLR实现,但大多数似乎没有维护或不完整,并且有许多东西不能在Scheme中进行琐碎的重写。

是否有任何与RDNZL支持的相反的工具(.NET -> Common )?我可以使用RDNZL来传递一个接受.NET对象的DLL吗?

我编辑这篇文章是为了包含一些对Lisp感兴趣的选项,这些选项可能知道它们是否在Windows上,以及它们为什么不能完全满足上面的要求(或者像您的用户一样,我没有充分表达我的需求:)。

  • IronScheme -不错,快速,维护和快速,但它不是通用的Lisp
  • ClojureCLR --不是通用的Lisp;Beta,需要~4秒来启动(对于长期运行的应用程序来说是可以接受的,对于需要新的实例化,然后需要几十次调用的事情,则不能接受)。
  • LSharp -非通用Lisp,未维护
  • RDNZL --允许用.NET代码注册CL回调委托,但是您必须从CL开始,没有相对简单的方法(到目前为止我还能搞清楚)将.NET对象传递到由您选择的Common实现创建的"C DLL“中。
  • 雅尔 --建立在LSharp之上(包括Def宏和其他一些需要拥有的东西)。看上去有一段时间没有维护,但可能是目前最好的选择。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-23 12:49:10

“我需要向其他一些.NET应用程序公开它的一些功能”

下面的内容并不是您想要的,但是如果您想要跳出一段时间的话,我认为使用消息传递可能是最简单的(这完全是基于上面引用的声明)。类似于ZeroMQ,它为Common和.Net都提供了绑定。那么,问题不在于如何重写模块以使其与.Net兼容,而是如何将消息传递集成到模块中,以供独立的.Net应用程序使用。对话双方都必须在消息格式上达成一致,但在我看来,这比你在帖子中考虑的路线要容易得多。

如果您需要创建多个应用程序,那么可能需要一个pub/sub体系结构。

票数 5
EN

Stack Overflow用户

发布于 2010-04-23 16:30:57

您可能会发现LSharp很感兴趣,LSharp也有铁方案,还有克洛诺斯,它自称是Lisp方言。

我会花一点时间研究将代码移植到F#上有多困难,因为langage对Lisp的限制和不同之处。在Lisp中当然有相当多的构造,我会发现很难将它们优雅地按到F#中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2692464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档