7

因为我想使用 Lisp 的语法和 Python 的库。

也许像 Parenscript 这样的工具会生成 Python 代码而不是 Javascript。

4

2 回答 2

8

我一直在尝试使用针对 Python 字节码的 Lisp 编译器

你可以在这里看到一个小视频

它只是一个概念验证玩具,但它是 IMO 一条可行的路径,最终结果将能够自由地从 python 调用和调用(并且它将与任何 python 扩展库兼容)。然而,所有这些都保留了宏的力量(元编程可能是 Python 与 lisp 最远的领域)。

相反,以 Python 源代码为目标更烦人,因为有明确的语法限制使得编译 Lisp 变得困难(例如,赋值不是表达式,lambda 中不允许使用语句,捕获的变量在 Python 2.x 中是只读的)。

然而,VM 运行时没有这些限制,Python 字节码相当不错。

我的玩具目前可以以 Python 2.x、Python 3.x 为目标,甚至可以与 PyPy 一起使用(因此您也可以获得 JIT 编译器)。

当然,从技术角度来看,旨在成为一个完全兼容的 Common Lisp 实现将是 IMO 废话,但是基于 Python 运行时类型并与 Python 对象系统兼容的 lisp 方言反而可能是一个具有实际应用的合理工具。

于 2013-08-31T10:22:09.390 回答
3

我相信Hy是您正在寻找的。从教程:

Hy 转换为 python 自己的抽象语法树,因此您很快就会开始发现所有熟悉的 python 功能都触手可及。

但是请注意,Hy 不是 Common Lisp,因此您不能剪切和粘贴。

于 2013-08-31T08:21:53.923 回答