是否有.Net的Common Lisp实现?

时间:2008-09-21 07:00:31

标签: .net lisp common-lisp language-implementation

.Net是否有任何Common Lisp实现?

9 个答案:

答案 0 :(得分:25)

我最近没有看过它,但至少在过去,在CLR上完全实现常见的lisp存在一些问题,如果发生变化我会感到有些惊讶。问题出现了诸如浮点数的处理,其中.net / clr有办法做到这一点a)巧妙地不正确b)不同意ANSI标准的常见lisp,但c)不允许任何解决方法。还有其他类似的问题。这个东西很繁琐,可能不太重要,但意味着你不太可能在CLR上看到ANSI CL。

存在更大的问题,例如常见的lisp具有更强大的对象系统,因此您无法在运行时将其1:1映射到对象(没有MI,对于一个)。这没关系,但是让你有一种内部/外部的方法,这是常见的运行时试图避免...

你是否会看到一个常见的lisp-ish变种在它上面运行是一个不同的故事,但我现在不知道(不是我看起来很难)

答案 1 :(得分:17)

如果可以反过来,你可以通过Edi Weitz' RDNZL从你最喜欢的Lisp访问.Net。

答案 2 :(得分:14)

不,但您可能需要考虑在IronScheme上运行DLR

来自网站:

IronScheme旨在成为基于Microsoft DLR的符合R6RS的Scheme实现。

IronScheme将完整改写IronLisp,其中包含开发IronLisp时学到的经验教训。

答案 3 :(得分:11)

从2010年的2010年重新考虑这个问题,你现在可能想在CLR上考虑Clojure。这不是Common Lisp,但是如果你是从那个方向来的话,那将是相当容易学习的。与CLR互操作非常容易,每天都会吸引更多用户并解决其他几个重要主题,如并发。可能值得投入一些时间。更多CLR特定的Clojure信息here

答案 4 :(得分:7)

答案 5 :(得分:6)

.NET http://code.google.com/p/uabcl/

的完整常见lisp

答案 6 :(得分:0)

你可以尝试this(免责声明,我自己没有测试过)。另请阅读this。这就是链接的来源。

答案 7 :(得分:0)

#Script 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示例所需的所有缺少的功能:

#Script Lisp LINQ Exmples

为了提高可读性和熟悉性,它还采用了许多 Clojure 语法来定义 data list and map文字, anonymous functions, .NET互操作的Java Interop中的语法, keyword syntax for indexing collections并访问索引访问器 和Clojure流行的fndefdefn较短的别名-改进了与Clojure的源代码兼容性。

YouTube演示

由于它是一流的#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 AppsSharp Apps(。NET Core Windows桌面应用程序)。

答案 8 :(得分:0)

现在有Bike:https://github.com/Lovesan/bike,它使用lisp兼容层实现了到.Net Core平台的跨平台Common Lisp接口。

  • 首先是RDNZL重生
  • 这次,在.Net Core上,没有一行C ++代码,并且完全跨平台

(在https://github.com/CodyReichert/awesome-cl#net-core上看到了)