消除Haskell的策略

时间:2010-12-29 02:24:40

标签: compiler-construction haskell lambda-calculus

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

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

3 个答案:

答案 0 :(得分:5)

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

  • Library用于处理外部核心文件
  • 如何使用GHC generate外部核心
  • 关于其使用的学术paper

答案 1 :(得分: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。

答案 2 :(得分:1)

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