我正在阅读各种中间形式,但除了类似 wiki 的条目之外,我无法获得有关 A-normal 形式的信息。这里有人知道这件事或有很好的资源吗?
问问题
3169 次
2 回答
7
请参阅管理范式。
在计算机科学中,管理范式(缩写为 ANF)是程序的规范形式,由 Flanagan 等人在 1993 年引入,用作功能编译器中的中间表示,以使后续对机器代码的转换更加直接。
在 ANF 中,函数的所有参数都必须是微不足道的。也就是说,每个参数的评估必须立即停止。
语法
以下 BNF 文法描述了为支持 ANF 的约束而修改的纯 λ 演算:
EXP ::= VAL | let VAR = VAL in EXP | let VAR = VAL VAL in EXP VAL ::= VAR | λ VAR . EXP
编译器或研究中使用的 ANF 变体通常还允许使用常量、记录、元组、多参数函数、原始操作和条件表达式。
弗拉纳根,科马克;萨布里,阿米尔;杜巴,布鲁斯 F.;费莱森,马蒂亚斯。“The Essence of Compiling with Continuations”可能是权威来源。
还发现了一些关于cs252r 的注释:高级函数式编程。
于 2009-05-06T05:42:27.440 回答
4
从本质上讲,管理范式中的 lambda 项可以被解读为评估自身的过程,因为应用程序的所有参数都必须已经处于“评估”状态,因此必须明确评估参数的顺序。
在这篇独立有趣的论文中有一个有趣的概述,关于用于编译惰性函数语言的严格中间语言。第 3.1 节等,尤其是图 7,它为行政规范形式的严格语言提供了小步操作语义。
于 2009-06-21T23:50:38.630 回答