.Net 是否有任何 Common Lisp 实现?
9 回答
我最近没有看过它,但至少在过去,在 CLR 上完全实现 common lisp 存在一些问题,如果这发生了变化,我会有点惊讶。问题出现在处理浮点数之类的问题上,其中 .net/clr 有办法做到这一点,即 a) 略微不正确 b) 不同意通用 lisp 的 ANSI 标准,但 c) 不允许任何解决此问题的方法。还有其他类似的问题。这些东西很繁琐,也许不太重要,但意味着您不太可能在 CLR 上看到 ANSI CL。
还有更大的问题,例如 common lisp 有一个更强大的对象系统,所以你不能在运行时将它 1:1 映射到对象(没有 MI,一个)。这没关系,但给您留下了一种内部/外部的方法,这是常见的运行时试图避免的......
无论您是否会看到一个常见的 lisp-ish 变体在其上运行,都是另一回事,但我目前不知道(不是我仔细研究过)
如果可以反过来,您可以通过Edi Weitz 的 RDNZL从您最喜欢的 Lisp 访问 .Net 。
不,但您可能需要考虑在DLR上运行IronScheme。
从网站:
IronScheme 的目标是成为基于 Microsoft DLR 的符合 R6RS 的 Scheme 实现。
IronScheme 将完全重写 IronLisp,并结合开发 IronLisp 的经验教训。
从 2008 年到 2010 年重新考虑这个问题,您现在可能想要考虑 CLR 上的 Clojure。它不是 Common Lisp,但如果你来自那个方向,它会很容易学习。与 CLR 的互操作非常简单,它每天都会吸引更多的用户,并解决其他几个重要的话题,比如并发性。可能值得在其中投入一些时间。更多 CLR 特定 Clojure 信息在这里。
.NET 的完整通用 lisp http://code.google.com/p/uabcl/
截至 2019 年,现在有 Bike:https ://github.com/Lovesan/bike它使用 lisp 兼容层实现了到 .Net Core 平台的跨平台 Common Lisp 接口。
- 首先是RDNZL重生
- 这一次,在 .Net Core 上,无需一行 C++ 代码,完全跨平台
#Script Lisp
我正在开发Lisp,它是Nukata Lisp#Script
的增强版本,具有许多新功能,可重用现有的脚本功能,以提供与其余部分
(请参阅语言块和表达式)和 .NET 的无缝集成,包括.NET 类型的脚本,支持适用于所有 .NET 数字类型,并可以访问其包含1000多种脚本方法的综合库- 专为从动态语言访问 .NET 功能而设计。#Script
#Script
为了提高与现有 Common Lisp 源代码的兼容性,它还实现了大部分Simplified Common Lisp Reference 以及在 Lisp 中实现 C# LINQ 101 示例所需的所有缺失函数:
#Script Lisp LINQ 示例
为了提高可读性和熟悉度,它还采用了许多Clojure语法来定义
数据列表和映射文字、
匿名函数、Java Interop中用于 .NET Interop 的
语法、用于索引集合和访问索引访问器的关键字语法以及 Clojure 流行的较短别名fn
, def
, defn
- 提高与 Clojure 的源代码兼容性。
YouTube 演示
因为它是一流的#Script
语言,它受益于其广泛的支持用例生态系统,您可以在下面的 YouTube 视频中预览其中的一些:
- #Script LISP Repl 与 web lisp
- Lisp TCP REPL 与#Script Lisp
- #Script Live 观看了 Lisp Shell 脚本
- 来自游戏内#Script Lisp REPL 的脚本 Unity 3D 游戏对象
安装
#Script
Lisp 可以通过Web跨平台dotnet
工具立即安装,该工具可以通过以下方式安装:
$ dotnet tool install -g web
你可以在哪里启动一个即时的 Lisp REPL:
$ web lisp
并且能够运行和观看 Lisp 脚本,您可以在其中实时查看更改。
Windows应用程序 dotnet 工具中提供了相同的功能:
$ dotnet tool install -g app
此外,您还可以使用#Script
Lisp 开发Gist 桌面应用程序和Sharp 应用程序(.NET Core Windows 桌面应用程序)。