写点什么

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

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

关注

评论

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

低代码实现探索(二十七)低代码如何继承传统

零道云-混合式低代码平台

简单的线程池实现多线程对大文件的读取

CRMEB

架构实战营:模块六作业

Geek_93ffb0

「架构实战营」

使用hydra对端口进行爆破

喀拉峻

网络安全kali渗透学习 web渗透入门 ARL资产侦察灯塔系统搭建及使用

学神来啦

i人事CTO王景飞:i人事+计算巢,协同赋能HR业务

阿里云弹性计算

阿里云 计算巢

架构实战营-毕业设计

Beyond Ryan

浪花过后,2022低代码该往哪儿走?

ToB行业头条

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 可观测

StreamNative 联合传智教育推出免费 Apache Pulsar 中文视频教程

Apache Pulsar

大数据 开源 架构 云原生 Apache Pulsar

架构实战营-毕业设计

Beyond Ryan

markdown-it 插件如何写(二)

冴羽

前端 markdown vuepress markdown-it markdown-it插件

低代码实现探索(二十六)移动端H5开发

零道云-混合式低代码平台

Nacos电子书 读后感(一)

努力努力再努力

1月日更

精彩回顾!| Google DevFest 2021 广州国际嘉年华

江湖老铁

【网络研讨会】“专家面对面”-MongoDB模式设计

MongoDB中文社区

mongodb

流计算 Oceanus | Flink JVM 内存超限的分析方法总结

腾讯云大数据

flink 实战 流计算 Oceanus

使用APICloud AVM框架开发预约应用

YonBuilder低代码开发平台

前端框架 APP开发 APICloud 跨端开发 小程序开发

通证经济是更高层次的自由

CECBC

喜报!东方证券携手博睿数据荣获《金融电子化》2021科技赋能金融业务突出贡献奖

博睿数据

12月云短信报告出炉,阿里云闯进前三

博睿数据

征文投稿丨使用轻量应用服务器部署Hadoop云集群

阿里云弹性计算

hadoop 轻量应用 征文投稿

明道云助力东航食品营销数据整合

明道云

云信小课堂|如何实现音视频安全检测?

网易云信

安全 音视频

Flink 实践教程-进阶(7):基础运维

腾讯云大数据

flink 实战 流计算 Oceanus

哲元科技×飞桨EasyDL|助力世界500强企业打造“灯塔工厂”,探索智能制造星辰大海

百度大脑

Kubernetes 下部署 JMeter 集群

zuozewei

Jmeter 性能测试 1月月更

安全研究人员发现:Nanocore等多个远控木马滥用公有云服务传播

H

网络安全

OpenMLDB在AKULAKU实时特征计算场景的应用

第四范式开发者社区

机器学习 大数据 OpenMLDB 特征平台

RadonDB PostgreSQL on K8s 2.1.0 发布!

RadonDB

数据库 postgresql 开源 RadonDB

用11本白皮书搭建3座桥:联想企业科技集团让智能化转型不再有孤岛

脑极体

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