我正在为纯功能程序开发虚拟机,我希望能够测试和使用已有的各种Haskell模块。 VM在无类型lambda演算中基本上作为输入。我想知道从现代Haskell模块中提取这样一个表示的好方法(例如,使用MPTC,模式保护等)。我做了一点研究,似乎没有一个工具可以做到这一点(我会很高兴被误解),这没关系。我正在寻找一种方法。
GHC Core似乎过于注重操作,特别是因为VM所做的一件事就是显着改变评估顺序。是否有任何可访问的中间表示更接近于lambda演算?
答案 0 :(得分:5)
GHC的外部核心与使用GHC的lambda演算差不多。 Here是一个直接指向表达式类型的链接,如果你想直接进入。
答案 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)