和之间有区别吗?


11

我目前正在学习Lambda演算,并且想知道以下两种不同的书写Lambda术语的方法。

  1. λXÿXÿ
  2. λXλÿXÿ

意思或应用beta减少的方式是否存在任何差异,或者仅是表达同一件事的两种方式?

尤其是对创建的定义让我感到奇怪:

=λXÿλppXÿ

Answers:


15

这些只是符号的区别。是λx.λy.λz.t的缩写。这里没有魔术。λ X λ ÿ λ ž ŤλXÿžŤλXλÿλžŤ

确实,但您倾向于通过更改编写定义的方式来强调是函数。但这确实是一样的。=λXÿppXÿλ p p Ť üŤüλppŤü


17

第一个是第二个的缩写。缩短表达式是一种常见的语法约定。

另一方面,如果您的语言中有元组,则两者之间是有区别的

  1. λXλÿXÿ
  2. λXÿXÿ

在前一种情况下,我可以为函数提供一个参数,然后将结果函数传递给其他函数。在后一种情况下,必须同时提供两个参数。当然,可以使用一个函数将1转换为2,反之亦然。此过程称为(un)currying

您提到的的定义是将对的概念编码为 -calculus,而不是将对作为原始数据类型(如我上文所述)。λλ


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.