红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

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

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

关注

评论

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

我的时间管理之路(附工具集合及使用心得)

YoungZY

App 时间管理

关于用户体验的一些思考

AR7

android 产品开发

技术工作中的颜值

N维空间的尘埃

Java运算符实际运用

凌轩

Java 编程语言

C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

Python名人堂

C# .net 算法 LeetCode

Java开发工具与HelloWorld

编号94530

Java eclipse Hello World ! IDEA 开发工具

不要抱怨,也别憋屈

孙苏勇

职场 随笔杂谈

短视频时代下的知识摄取

Neco.W

学习 知识管理 知识体系 短视频

如何在团队中做好Code Review

Ken

团队协作 代码审查 Code Review 代码质量

字符与编码

引花眠

计算机基础 utf-8

ARTS打卡 第1周

引花眠

ARTS 打卡计划

阿里的OceanBase上天了,但你还不会用Explain看SQL的查询计划吗?

Super~琪琪

MySQL 数据库 后台开发 后端

【转载】如何在团队中做好Code Review?

北纬32°

美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养

神经星星

人工智能 程序员 李飞飞 硅谷 AI 伦理

系统化服务构建-软件工程分层

图南日晟

微服务 软件工程 架构设计

世界那么大,你有偏见吗?

谢锐 | Frozen

创业 技术管理

谈谈控制感(10):怎么做一个靠谱的人

史方远

职场 心理 成长

怎么控制老板不断加需求?

kimmking

已发表的技术文章-大数据方面

绝影-大数据

Flink 完美搭档:数据存储层上的 Pravega

Apache Flink

大数据 flink 流计算 实时计算

自制操作系统

贾献华

df 和 ls 命令执行夯主

首富手记

生产力

docker19.03读取NVIDIA显卡

首富手记

Docker Dockerfile

实战 Java8-CompletableFuture

子路无倦

Java 多线程 java8 CompletableFuture

这个名字,你不能再读错了

小天同学

历史 科普

要和竞争对手做比较吗?

邓瑞恒Ryan

创业 战略管理

孩子,我们在睡前一起来阅读 15 分钟的好书,让彼此都带着好的故事入眠。

叶小鍵

正确阅读 托马斯·奥本 Doug Antin 蒂·泰德罗克

我们都可能陷入经济困境

董一凡

生活

重新开始,被自己搞砸的生活

小天同学

个人感想 日常思考

写给产品经理的信(2):产品设计能力怎样进阶

punkboy

产品 个人成长 产品经理 产品设计 进阶

ARTS week 1

丽子

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