写点什么

在 Lisp 中使用 RDNZL 调用.NET 类库

  • 2007-08-23
  • 本文字数:731 字

    阅读完需:约 2 分钟

长期以来对 Lisp 的诟病之一就是 Lisp 缺乏高质量的类库。尽管有不少人在争论这个观点是否正确,但是能够访问.NET 平台下不计其数的高质量类库,确实能给人们带来很多价值。

RDNZL 为 Windows 平台下的 Lisp 开发人员提供了一个访问.NET 类库的途径。尽管目前它还不能支持其它的 CLR 实现,比如说 Mono,但是 RDNZL 的维护人员正在接纳这些平台的补丁。

在 Lisp 一方,这套类库支持 Corman Common List、ECL、Allegro 和 LispWorks。SBCL 和 GNU CLISP 的移植版目前尚在开发中。

RDNZL 完成诸如对象创建、.NET 风格数组、枚举类型、装箱(Boxing)、.NET/Lisp 类型转换和起来类似的基础工作,相对来说容易不少,而方法调用可以用两种方式完成。最为容易的方式是使用 Lisp 函数调用、属性或者字段。这些方法使用反射来调用下面的.NET 方法。如果希望避免反射,并使调用时间减半,开发人员可以使用define-rdnzl-call来为相应函数创建一个 Lisp 包装器。

使用这个类库对性能最严重的影响就是对所传送数据的重新编组的时间损耗。出于这一原因,控制跨平台方法调用的数量是更可取的,而人们尤其应当注意避免在 Lisp 中的一个紧凑循环中频繁调用.NET 代码。

由于要为 COM 类库创建 CLR 可调用的包装器(CLR Callable Wrapper)是件易如反掌的事情,RDNZL 也为开发人员提供了调用 Windows 平台上浩如烟海的 COM 类库的途径。在链接页面中,有不少示例,其中就有一个从 Lisp 中通过 Microsoft Office 自动化调用 Excel 对象的例子。

事件处理器和其它的委托(delegate)可以通过向委托的构造方法传入一个 Lisp 闭包的方式创建。不过要这样做必须小心从事,因为这样可能会创建出一个循环引用,从而扰乱 Lisp 和.NET 的垃圾收集器。

查看英文原文: Call .NET Libraries from Lisp Using RDNZL

2007-08-23 23:003263
用户头像

发布了 117 篇内容, 共 16.7 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

什么是 Git? - 探索分布式版本控制工具

码语者

git DevOps

有感于最近的一些事件

ES_her0

28天写作 3月日更

作业5-待完成

YING꯭YING

Apache Pulsar在能源互联网领域的落地实践

Apache Pulsar

大数据 开源 Apache Pulsar 消息系统 工业物联网

重来:更为简单有效的商业逻辑

张老蔫

28天写作

产品经理训练营——大作业

产品经理训练营

金融科技面试这些事儿

我是程序员小贱

3月日更

第八周作业

Ashley.

相对完整产品文档-大作业06

🌟

产品 产品经理训练营 产品训练营 产品经理训练 产品训练营作业

大作业-测绘数据采集核验平台

Geek_971380

从顶级赛事殿堂飞向人间烟火:度小满的NLP技术突破能给小微企业带来什么?

脑极体

(28DW-S8-Day25) 用流程重新定义职位

mtfelix

28天写作

《MySQL》系列 - 小胖要的 MySQL 索引详解(附 20 张图解)

一个优秀的废人

Java MySQL 数据库 索引 B+树

大作业用例

产品经理训练营

第八周笔记

Ashley.

第八周总结

产品训练营

第八周学习总结

月亮 😝

InfoQ 写作平台 2021年度100位优质创作者签约计划

InfoQ写作社区官方

签约计划 热门活动

OSPF邻居状态详解

年薪千万的产品经理打开了我对这个职位的新认知!

冰河

深度思考 程序人生 产品经理

中关村软件园与百度飞桨启动AI人才培养计划:AI发展,人才先行

百度大脑

人工智能 百度 人才培养

大作业

Geek_72d5ab

电视端智能推荐PRD1.0

踏凌霄

领域驱动设计101 -领域、知识、组织结构及模型

luojiahu

领域驱动设计

越过山丘,遇见更美的风景

boshi

创业 七日更

第九周作业

Geek_mewu4t

产品经理训练营--大作业

月亮 😝

图片相似度计算及检索调研

程序员架构进阶

算法 设计实践 图片识别 28天写作 3月日更

校友图书共享PRD

思亭

图片社区类APP增加评论表情包功能

🙈🙈🙈

极客大学产品经理训练营

OLAP技术选型思路总结,你绕不开的“不可能三角”

关二爷大数据笔记

在Lisp中使用RDNZL调用.NET类库_.NET_Jonathan Allen_InfoQ精选文章