减少策略和评估策略有什么区别?


10

从Wikipedia上的评估策略文章中:

λ演算中的约简策略的概念相似但又截然不同。

从Wikipedia上的减少策略文章中:

它与计算机科学中的评估策略概念相似但有细微差别。

这两篇文章所暗示的评估策略与减少策略之间的微妙区别是什么?它们只是来自不同领域的两个相似概念吗?


3
评估仅针对封闭式术语进行定义,而不受约束。减价是允许在活页夹下进行的,因此对开放术语进行了定义。
Neel Krishnaswami

Answers:


8

减少策略是Lambda上的一项功能,可从所有可能的redex中选择一个redex(可还原表达式)-取决于您定义为redex的内容。

非正式地,评估策略是一种语言评估其参数的顺序。语言传递给函数的是参数传递策略。

要了解这些之间的联系,请研究Plotkin关于按名称调用,按值调用和lambda演算的论文。他明确指出,您要根据所需的评估顺序选择不同的AXIOMS​​。对于Cb名称,您想要旧的beta公理,对于cb值,您想要Beta值公理。如果这样做,则所有的元定理对两种口味的计算都相同。后来,我(与许多合作者)表明,这个想法可以推广到PL世界研究的所有方面。

都是技术性的,不是可以解释的诗歌。只需阅读就可以了。

-Matthias Felleisen

ps我要说的是,我认为人们可以更轻松地从Redex书中的第一部分了解Plotkin的论文。但是,是3倍。



换句话来说,您说对一个减少策略完全确定一个词的后继者,而一个评估策略仅指定应用的抽象如何减少(对同余什么也没说)是正确的吗?
Guido'2

6

“减少策略”维基百科文章完全摘自匿名IP对“评估策略”文章进行的特定编辑

从某种意义上说,我怀疑该领域的相对较少的人会自发给出答案,如果您问他们“您是否会区分“减少策略”和“评估策略”这两个名字?我只是从Matthias Felleisen那里听到这句话的,他坚信这种区别的重要性-我认为其他人也有这种观点,他们有机会抽出时间与他详细讨论这些观点。

我目前对这一点的理解(但我尚未完全研究其技术细节)涉及以下方面:这是关于您使用的是“大步长”还是“小步长”语义-这种区别是标准且易于理解的由该领域的每个人。小步语义定义了还原的一个原子步,结果通常还是可简化的。大步语义定义了一个简化的“大”步骤,从开始程序一直到其值(如果您的语言除了返回值之外还具有其他可观察的效果,例如输入/输出或输出,还有其他更丰富的“答案”类型)。可变状态)。

如果同时定义了大步关系和小步关系,则可以检查大步语义是否包含在小步关系的传递闭包中,并且小步关系不会归结为除通过大步关系达到的那些,如果定义了大步减少,则发散。这是两者之间的预期相干关系。

我认为可以用现代术语或多或少地描述本文的措辞,因为“评估策略是大步关系”,“减少策略是小步关系”。请注意,“减少策略”文章中的讨论主要是关于1973年至1991年之间的文章和研究(更重要的是,他们在阅读和写作过程中形成的雄辩观点),那时这些概念刚刚诞生,并且可能不像今天这样容易理解。(1987年,Kahn强调了大步语义,而关于小步语义的最重要著作之一是Wright和Felleisen,1992年)

对于为什么Felleisen坚持这种差异的重要性(这就是为什么除了“小步长vs.大步长,嗯”之外,还有更多其他原因)的观点,我目前的理解是:提出的一点是,应该将小步语义视为实现细节。根据这个论点,语义是将每个程序映射到其值/答案的抽象函数,其余的是旨在对其进行逼近的实现设备(或由该语义引起的等价原因)。今天,当我们大步前进时,我们想到的是句法性质的推理规则系统,但是上面讨论的“归约策略”实际上是其作为映射的抽象。(我认为这在实践中并没有为该概念提供更多的表现力或力量,但是使它更加抽象。)

因此,我认为这个Wikipedia页面和Matthias Felleisen所说的是这样的:“以您喜欢的任何方式定义评估,但最终,重要的是程序如何映射到它们的值/答案/行为,这就是所谓的“操作语义”和推理依据。”

请注意,这种立场在某种程度上违背了“操作语义”和“指示语义”之间的当前区别(我认为这是共识,但可能是我的文化偏见),前者在本质上被认为是句法上的(定义为归约关系),后者的典型特征是计算上等效的程序具有完全相同的符号(因此,该符号忽略了实际的计算机制)。在后一种观点下,文章和我在上面的解释中提议的“评估策略”或“操作语义”被认为是一种指称语义-但可以接受的是比大多数更具体的性质:值/答案/行为比许多语义域更接近句法对象。

参考文献:要理解这种观点,请回到它的原始资料来源,这是Gordon Plotkin在1973年发表的文章。您可能会很幸运,尝试在维基百科上引用的后一篇文章;例如,我发现1991年Crank和Felleisen撰写的“参数传递和Lambda微积分”在前几页中非常清楚地概述了它们在此问题上的立场。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.