15

我正在阅读各种中间形式,但除了类似 wiki 的条目之外,我无法获得有关 A-normal 形式的信息。这里有人知道这件事或有很好的资源吗?

4

2 回答 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 回答