1
我想了解lambda微积分。但是,我有点卡住这个表达式:TRUE和TRUE。我无法弄清楚如何才能得到如何在lambda微积分中正确减去TRUE和TRUE?
((\T F -> T) (\T F -> T))
到
(\F T F -> T)
,不
(\F -> (\T F -> T))
\是λ-签名
我想了解lambda微积分。但是,我有点卡住这个表达式:TRUE和TRUE。我无法弄清楚如何才能得到如何在lambda微积分中正确减去TRUE和TRUE?
((\T F -> T) (\T F -> T))
到
(\F T F -> T)
,不
(\F -> (\T F -> T))
\是λ-签名
(\F T F -> T)
和
(\F -> (\T F -> T))
是一样的。
https://en.wikipedia.org/wiki/Lambda_calculus_definition#Notation:
- 最外括号被丢弃:的
M N
代替(M N)
- [...]
- 一个抽象的主体延伸直到右尽可能:
λx. M N
装置λx. (M N)
和不是(λx. M) N
- 一系列的抽象是合同的:
λx. λy. λz. N
是abb reviated如λxyz. N
特别地,
(\F -> (\T F -> T))
可以写成
(\F -> \T F -> T)
,因为我们可以删除多余的括号和外拉姆达的主体最右延伸尽可能,然后可以写入
(\F -> \T -> \F -> T)
或
(\F T F -> T)
由最后一个规则(收缩)。
Thnx为你的答案 - 它真的有帮助!我想我得到你在说什么。所以,让我直截了当地说,删除冗余括号的原因是因为没有更多的参数可以传递给函数体,对吧? –
为什么添加了'F#'标记。我希望看到一些带有该标签的F#代码?我只看到'lambda-calculus' –