【发布时间】:2008-09-21 07:00:30
【问题描述】:
.Net 是否有任何 Common Lisp 实现?
【问题讨论】:
标签: .net lisp common-lisp language-implementation
.Net 是否有任何 Common Lisp 实现?
【问题讨论】:
标签: .net lisp common-lisp language-implementation
我最近没有看过它,但至少在过去,在 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 信息here。
【讨论】:
【讨论】:
.NET 的完整通用 lisp http://code.google.com/p/uabcl/
【讨论】:
截至 2019 年,现在有 Bike:https://github.com/Lovesan/bike 它使用 lisp 兼容层实现了与 .Net Core 平台的跨平台 Common Lisp 接口。
【讨论】:
我正在开发#Script Lisp,它是Nukata Lisp 的增强版,具有许多新功能
它重用#Script 现有的脚本功能,以提供与#Script 其余部分的无缝集成
(见Language Blocks an Expressions)
和 .NET,包括 Scripting of .NET Types,支持所有 .NET 数字类型并访问其全面的
超过 1000+ Script Methods 的库 - 专为从动态语言访问 .NET 功能而设计。
为了提高与现有 Common Lisp 源代码的兼容性,它还实现了大部分 Simplified Common Lisp Reference 以及在 Lisp 中实现 C# LINQ 101 示例所需的所有缺失函数:
为了提高可读性和熟悉度,它还采用了许多 Clojure 语法来定义
data list and map 文字,
anonymous functions,
Java Interop 中用于 .NET 互操作的语法,
keyword syntax for indexing collections 和访问索引访问器
和 Clojure 流行的短别名 fn、def、defn - 提高了与 Clojure 的源代码兼容性。
因为它是一流的#Script 语言,它受益于其广泛的支持用例生态系统,您可以在下面的 YouTube 视频中预览其中的一些:
#Script Lisp 可以通过web 跨平台dotnet 工具立即安装,该工具可以安装:
$ dotnet tool install -g web
您可以通过以下方式启动即时 Lisp REPL:
$ web lisp
并且可以run and watch Lisp scripts 实时查看更改。
Windows app dotnet tool 中提供相同的功能:
$ dotnet tool install -g app
此外,您还可以使用 #Script Lisp 开发 Gist Desktop Apps 和 Sharp Apps(.NET Core Windows 桌面应用程序)。
【讨论】: