10

我正在为纯功能程序开发一个虚拟机,我希望能够测试和使用已经可用的各种 Haskell 模块。VM 基本上将无类型 lambda 演算中的项作为输入。我想知道从现代 Haskell 模块(例如,使用 MPTC、模式保护等)中提取这种表示的好方法是什么。我做了一些研究,似乎还没有一个工具可以做到这一点(我很高兴弄错了),没关系。我正在寻找一种方法。

GHC Core 似乎过于注重操作,尤其是因为 VM 所做的一件事就是显着改变评估顺序。是否有任何可访问的中间表示更接近于 lambda 演算?

4

3 回答 3

5

GHC 的外部核心与使用 GHC 的 lambda 演算差不多。如果您想直接进入,这里有一个直接指向表达式类型的链接。

于 2010-12-29T06:45:46.883 回答
3

EHC 曾经在表示之间有这种流动:

HS -> EH -> 核心 -> 咧嘴 -> 傻

HS 显然是 Haskell,EH 含糖量较低,由类型检查器使用,Core 是 GHC 的 Core 的类似物,而 Grin 和 Silly 的级别低于此。

Jeroen Fokker 有一篇描述 EHC 架构的论文,我从上面抄袭了上面的内容,但它可能已经过时了(我不知道 EHC 仍然使用 Silly 表示)。我认为 EHC 为它的每个内部表示提供解析器和漂亮的打印机,这会很方便。

还有来自 YHC 的 York.Core,我看到人们对 GHC Core 的评价更高,但我不知道是否有办法将“现代”Haskell 编译成 York.Core。

于 2010-12-29T08:53:53.563 回答
1

嗯...听说过Haskell 内核吗?我不确定你需要什么。它是某种脱糖的 Haskell,基本上在 Haskell 报告中定义。我不确定这是否是您需要的。

于 2010-12-29T05:45:59.260 回答