什么是 A-范式?

发布于 2024-07-19 04:21:16 字数 75 浏览 8 评论 0原文

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

I was reading about various intermediate forms but I cant get information about A-normal forms besides the wiki-like entries. Does anyone here know about this or has good resources about it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

牛↙奶布丁 2024-07-26 04:21:16

请参阅管理范式

在计算机科学、管理方面
正常形式(缩写ANF)是
程序的规范形式,即
Flanagan 等人 1993 年提出
充当中间人
函数式编译器中的表示
进行后续转换
机器代码更直接。

在 ANF 中,函数的所有参数
一定是微不足道的。 即评价
每个论证都必须停止
立即。

语法

下面的BNF语法描述了
纯 λ 演算修改为
支持ANF的约束:

EXP ::= VAL  
        |   让 VAR = EXP 中的 VAL 
        |   让 VAR = VAL EXP 中的 VAL 

  价值 ::= 价值 
        |   λ VAR 。   经验值 
  

编译器中使用的 ANF 变体或
在研究中经常允许常数,
记录、元组、多参数
函数、原始操作和
还有条件表达式。

弗拉纳根,科马克; 萨布里,阿姆鲁; 布鲁斯·F·杜巴;马蒂亚斯·费莱森。 “The Essence of Compiling with Continuations” 可能是权威来源。

还发现了一些关于cs252r:高级函数式编程的注释。

See Administrative normal form.

In computer science, administrative
normal form (abbreviated ANF) is a
canonical form of programs, which was
introduced by Flanagan et al 1993 to
serve as an intermediate
representation in functional compilers
to make subsequent transformations to
machine code more direct.

In ANF, all arguments to a function
must be trivial. That is, evaluation
of each argument must halt
immediately.

Grammar

The following BNF grammar describes
the pure λ-calculus modified to
support the constraints of ANF:

EXP ::= VAL 
      | let VAR = VAL in EXP
      | let VAR = VAL VAL in EXP

VAL ::= VAR
      | λ VAR . EXP

Variants of ANF used in compilers or
in research often allow constants,
records, tuples, multiargument
functions, primitive operations and
conditional expressions as well.

Flanagan, Cormac; Sabry, Amr; Duba, Bruce F.;Felleisen, Matthias. "The Essence of Compiling with Continuations" likely is the definitive source.

Also found some notes on cs252r : Advanced Functional Programming.

嘿嘿嘿 2024-07-26 04:21:16

本质上,管理范式中的 lambda 项可以被解读为评估自身的过程,因为应用程序的所有参数都必须已经处于“评估”状态,因此必须明确评估参数的顺序。

此中有一个有趣的概述关于用于编译惰性函数式语言的严格中间语言的独立有趣的论文。 第 3.1 节及以下部分,特别是图 7,它给出了管理范式中严格语言的小步操作语义。

In essence, a lambda term in administrative normal form can be read as a procedure for evaluating itself, since all arguments to applications must already be in 'evaluated' and thus the order in which arguments should be evaluated must necessarily be made explicit.

There's an interesting overview in this independently interesting paper on a strict intermediate language for compiling lazy functional languages. Section 3.1 et seq, and especially figure 7 which gives a small-step operational semantics for a strict language in administrative normal form.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文