HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

虚拟云桌面系统可以部署应用于哪些行业

青椒云云电脑

云桌面 云桌面系统 虚拟云桌面

5G Signal Tower and Controller Communication: Comparing Wired, Wireless, and Wi-Fi Solutions

wallyslilly

IPQ6010

“AI能不能代替某某职业”,到底谁在破防?

禅道项目管理

人工智能 程序员 AI IT 项目经理

一文教会你如何集成百川大模型官网API

幂简集成

人工智能 API

Spring Cloud Alibaba 集成分布式定时任务调度功能

阿里巴巴云原生

阿里云 云原生 spring cloud alibaba

云桌面的技术优势

青椒云云电脑

云桌面 云桌面厂家

EMQX Platform & Snowflake:构建可再生分布式能源的智慧未来

EMQ映云科技

分布式 emqx 可再生能源

直播预约丨《指标体系建设实战》第五期:指标体系构建方法与案例分享

袋鼠云数栈

大数据 数据指标

Go 语言中的 MySQL 事务操作

左诗右码

Go 语言

工业边缘网关软件 NeuronEX 中基于角色的访问控制功能

EMQ映云科技

大数据 边缘计算 访问控制 工业边缘网关

Prometheus 标签全揭秘:从数据源到仪表盘

腾讯云可观测平台

科大讯飞t20pro和t10区别

妙龙

科大讯飞 学习机

Python数据分析:Numpy、Pandas高级

我再BUG界嘎嘎乱杀

Python 编程 数据分析 后端 开发语言

「免费领票」从云计算到生成式AI,2024云栖大会等你来。

阿里云视频云

云计算 音视频 视频云 云栖大会 生成式AI

【YashanDB数据库】yasql登录有特殊字符@导致无法登录

YashanDB

yashandb 崖山数据库 崖山DB

借你慧眼,把 StarRocks Compaction 看得明明白白

Ding_Kai

数据仓库 LakeHouse StarRocks

淘宝商品详情API:从ID到详细信息的全面获取

技术冰糖葫芦

API Explorer api 货币化 API 接口 API 测试

终身受益的AI自动化创收计划

测试人

一文带你深度解析MySQL 8.0事务提交原理

华为云开发者联盟

数据库 企业号 8 月 PK 榜 企业号2024年8月PK榜

做了六年多技术管理,聊一些经验总结

Keegan小钢

技术管理 职场发展 #程序员

科大讯飞t20pro和X3 Pro区别对比评测

妙龙

科大讯飞 学习机

玩转生产环境全链路压测

数新网络官方账号

生产环境全链路压测

云电脑如何根据业务需求调整资源

青椒云云电脑

云电脑 云电脑平台

桌面虚拟化还需要采购主机吗

青椒云云电脑

桌面虚拟化

移动图形工作站:适合3D建模和渲染的设备推荐

青椒云云电脑

图形工作站 移动图形工作站

SD-WAN助力在线教育教学的发展

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

Python数据分析:Numpy、Pandas基础

我再BUG界嘎嘎乱杀

Python 编程 数据分析 后端 软件开发

两分钟“熟读”《国史大纲》,大模型的下一个爆点是“书童”?

Alter

inBuilder低代码平台新特性推荐-第二十三期

inBuilder低代码平台

IPQ9574 and IPQ9570 - In-depth analysis of the core chips in Wi-Fi 7 motherboard design

wifi6-yiyi

WiFi7 ipq9574 IPQ9570

淘宝商品描述API返回值中的HTML格式内容解析技巧

技术冰糖葫芦

API Explorer api 货币化 API 接口 API 测试

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