GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

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

2007 年 8 月 23 日

长期以来对 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 年 8 月 23 日 23:002712
用户头像

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

关注

评论

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

淘宝的商品中心和类目体系是怎么设计的

邴越

阿里 模型 电商 架构· 业务

面试加分项!我在美团Android研发岗工作的那5年,系列篇

欢喜学安卓

android 程序员 面试 移动开发

今年我读了四个开源项目的源码,来分享下心得

yes

源码 面试 后端

原来这就是大厂的MySQL主从复制、读写分离及高可用方案!

云流

MySQL 数据库 架构

2021全新iOS学习方向

ios 逆向

“新内容 新交互” 阿里云全球视频云创新挑战赛正式开启!

阿里云视频云

阿里云 音视频 应用

【春节不远行,云上过大年】来华为云社区,接任务领新年红包啦···

华为云开发者社区

华为云

基于SpringBoot开源项目JeeSite的持续交互介绍

Java王路飞

Java 程序员 面试 项目 springboot

徒手撸一个Spring Boot中的starter

田维常

springboot

源码阅读范例!终于有人把JDK源码精髓收录成册,全网开源了

程序员小毕

Java 源码 程序员 jdk 面试

图扑物联助力打造现代化智能港口

一只数据鲸鱼

物联网 工业4.0 组态软件 智慧港口

以终为始:28天打卡输出复盘

熊斌

个人成长 写作平台 28天写作

一周信创舆情观察(1.25~1.31)

统小信uos

太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己

Crud的程序员

Java 程序员 架构

🌏 超详细 DNS 协议解析

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

LeetCode题解:529. 扫雷游戏,DFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

滴滴夜莺二次开发全搞定

滴滴云

开源 监控 滴滴夜莺 夜莺监控 运维平台

16张图带你吃透Redis架构演进

Kaito

redis 架构 高性能

阿里大佬手码的SpringCloud+Alibaba笔记开源了,堪称保姆式教学

Crud的程序员

spring 程序员 架构

OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践

阿里巴巴云原生

人工智能 容器 运维 云原生 k8s

腾讯云TcaplusDB获新加坡MTCS最高等级安全认证

TcaplusDB

数据库 nosql 数据安全 数据管理 tencentdb

《iOS面试简历技巧解析》

ios 面试

面试加分项!零基础如何成为高级Android开发,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群

刘悦的技术博客

flask k8s kubectl Docker Desktop gunicorn

开放下载!解锁 Serverless 从入门到实战大“橙”就

阿里巴巴云原生

云计算 Linux Serverless 开发者 云原生

基于SpringBoot的微服务架构与K8S容器部署实践

云流

Java 架构 微服务

零基础实现Java直播(一):集成

ZEGO即构

您的《操作系统线程模型总结》请查收。

后台技术汇

28天写作 2月春节不断更

PM必备自我管理工具整理

做人没有梦想和咸鱼有什么区别

项目管理 PM

28天总结

张老蔫

28天写作

架构师week10总结

Geek_xq

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