中文

通过程序变换从 Push/Enter 到 Eval/Apply

编程语言 2016-06-22 v1

摘要

Push/enter 和 eval/apply 是函数式语言实现中使用的两种调用约定。在本文中,我们探讨了以下观察:当考虑多参数函数时,push/enter 和 eval/apply 约定下的栈行为分别类似于列表数据类型的两种特定实现:常规 cons 列表和一种具有惰性连接的列表。沿着 Danvy 等人关于定义解释器与抽象机之间函数对应关系的思路,我们利用这一观察将实现 push/enter 的抽象机转换为实现 eval/apply 的抽象机。我们表明,我们的方法足够灵活,能够将 push/enter 的 Spineless Tagless G-machine(即 GHC Haskell 编译器的语义核心)转换为其 eval/apply 变体。

关键词

引用

@article{arxiv.1606.06380,
  title  = {From Push/Enter to Eval/Apply by Program Transformation},
  author = {Maciej Piróg and Jeremy Gibbons},
  journal= {arXiv preprint arXiv:1606.06380},
  year   = {2016}
}

备注

In Proceedings WoC 2015, arXiv:1606.05839