阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

在 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:003080
用户头像

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

关注

评论

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

深入分析单例设计模式

Andy

Uniswap去中心化交易所系统开发

W13902449729

去中心化交易所系统开发 uniswap

Java多线程并发控制工具信号量Semaphore,实现原理及案例

码农架构

Java Java并发 并发编程 后端

如何在 OpenShift 中运行 Collabora Office

东风微鸣

openshift

云算力挖矿系统APP开发|云算力挖矿软件开发

系统开发

架构师训练营-第二周作业

Mark

28天写作挑战——坚持28天,每天500字

TGO鲲鹏会

28天写作 热门活动

AMD台式CPU市场份额距离英特尔还有多远?刚到四分之一

E科讯

零基础也能看得懂!Android面试心得必备技能储备详解,Android面试题及解析

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营第十三周

我是谁

架构师训练营第 1 期

自学编程的4大误区,你中招了吗?

田维常

程序员

加密数字货币钱包系统软件开发|加密数字货币钱包APP开发

系统开发

换个角度,聊聊全链路压测

老张

性能测试 系统稳定性 全链路压测

软件测试---BUG的生命周期

测试人生路

软件测试

年底了,你的数据库密码安全吗

Simon

MySQL 数据库

Java多线程并发控制工具CountDownLatch,实现原理及案例

码农架构

Java 并发编程 后端

泪目!美团点评APP在移动网络性能优化的实践,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

python 技术面试没过,居然是没有用 pytest 测试框架

和牛

Python 测试 测试框架 pytest

架构师第7周作业

Geek_xq

腾讯高工亲授“MySQL学习方法”【思维导图+学习笔记+实战文档+面试题库】让你站在数据库领域的顶峰 笑傲江湖!

比伯

Java 编程 架构 面试 计算机

比易宝betBEB平台获278万美元约合1807万元融资

DT极客

IoT爆发前夕,企业架构要面对哪些变革?

京东科技开发者

物联网

探索压测奥妙

ninetyhe

微服务 分布式系统 压力测试 性能调试

算法学习手册

田维常

算法

VoltDB成功入选CNCF Landscape云原生数据库全景图

VoltDB

云原生 cncf VoltDB 分布式内存数据库

再见 2020!Apache RocketMQ 发布 4.8.0,DLedger 模式全面提升!

阿里巴巴云原生

阿里云 开发者 云原生 存储 消息中间件

Filebeat同步写位点文件引发的磁盘IO问题

秦宝齐

使用PG_SHOW_PLANS监控PostgreSQL执行计划

PostgreSQLChina

数据库 postgresql 开源

HTTP 请求流程

double U

大前端 浏览器 HTTP

看完老板哭着让我留下来!带你彻底搞懂Android启动速度优化!Android篇

欢喜学安卓

android 程序员 面试 移动开发

MySQL不会丢失数据的秘密,就藏在它的 7种日志里

程序员小富

MySQL

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