具有讽刺意味的是,该标题是正确的,但并非以您似乎要说的方式出现,即“ lambda演算只是一种符号约定”是不正确的。
Lambda术语不是函数1。它们是语法,即页面上的符号集合。我们有处理这些符号集合的规则,最重要的是降低了beta。你可以有多个不同的是lambda项对应的相同的功能。2
我将直接解决您的问题。
首先,lambda不是被重用的名称。这不仅会造成极大的混乱,而且我们不会编写(或),如果是函数的名称,我们将这样做,就像我们写。在我们可以将(如果由lambda项定义)替换为lambda项,产生类似含义,这意味着是可以表示函数的表达式,而不是声明一个函数的声明(名为λ(x)(λ x)λf(x)f(x)f(λy.y)(x)(λy.y)λ或其他任何内容)。无论如何,当我们超载术语/符号时,(希望如此)可以通过上下文消除歧义,对于lambda术语肯定不是这种情况。
您的下一点是可以的,但有点无关紧要。这不是具有团队Lambda条款和团队职能的竞赛,只有一个可以获胜。lambda术语的主要应用是研究和理解某些种类的功能。多项式不是函数,尽管我们经常草率地识别它们。学习多项式并不意味着人们认为所有函数都应该是多项式,也不是多项式必须“做”一些“新的”事才值得研究的情况。
集合理论函数不是黑盒子,尽管它们完全由它们的输入输出关系定义。(从字面上看,它们是它们的输入-输出关系。)Lambda术语也不是黑盒,也不由它们的输入-输出关系定义。如前所述,您可以使用不同的lambda术语来产生相同的输入-输出关系。这也强调了一个事实,即lambda术语虽然可以诱发功能,但它们不是功能。2
实际上,多项式和lambda项之间的类推非常接近,我怀疑您可能不理解多项式与其表示的函数之间的区别,因此我将详细说明。3通常,当引入多项式时,通常使用实系数,它们被视为特定类型的实函数。现在考虑线性反馈移位寄存器(LFSR)的理论。它主要是的(单变量)多项式的理论,但是如果我们将其视为函数,则最多有这样的函数。但是,在有无限多个多项式。4F2 F2→F24F2看到这种情况的一种方法是,我们可以将这些多项式解释为函数以外的东西,实际上任何代数都可以。对于LFSR,我们通常将多项式解释为对比特流的运算,如果需要,可以将其表示为函数,尽管绝大部分此类功能都不在LFSR的解释图像中。F2→F2F22N→2N
这也适用于lambda术语,我们可以将它们都解释为函数以外的事物。与通常不计其数的无限功能集相比,它们都是更易于处理的对象。它们都比任意函数具有更多的计算能力。我可以编写一个程序来处理多项式(具有至少可以计算得出的系数)和lambda项。实际上,无类型的lambda项是可计算函数的原始模型之一。通常对这种更具符号/语法,计算/计算角度的观点比对lambda演算的更多语义解释更为重视,尤其是对于无类型的lambda演算。已输入Lambda术语是更易于管理的事物,通常(但并非总是)可以轻松地解释为集合理论函数,但是与非类型的Lambda演算相比,除了函数之外,Lambda术语通常还可以解释为更广泛的事物。他们也有自己的丰富的句法理论和与逻辑的深厚联系。
1该问题可能会以其他方式出现。也许您对功能是什么有误解。
2这实际上并不是那么简单。对于未类型化的 lambda演算,天真地将任意lambda项解释为集合理论函数实际上没有任何意义。当您尝试阐明解释的范围时,您可以开始看到这一点。如果我将lambda项解释为集合的元素,我也希望能够将其解释为上的函数,并将其解释为的函数,因为我想将应用程序解释为函数应用程序。您最终得到(或对此的弱化),这仅对单例集成立。我们需要的无类型lambda演算是一个反身对象DDDDD⊆D,对于集合的类别,没有非平凡的反身对象。对于输入的 lambda而言,这个故事有很多不同,但仍然可以说是不平凡的。
3如果您清楚知道这种区别,则此类比应该可以提供很多信息。
4对于特征0的字段(例如复数,实数,有理数或整数),不会发生此问题,因此,这种区分虽然仍然存在,但没有那么尖锐。