2017-04-08 94 views
1

我想了解lambda微积分。但是,我有点卡住这个表达式:TRUE和TRUE。我无法弄清楚如何才能得到如何在lambda微积分中正确减去TRUE和TRUE?

((\T F -> T) (\T F -> T)) 

(\F T F -> T) 

,不

(\F -> (\T F -> T)) 

\是λ-签名

graphical explanation

+1

为什么添加了'F#'标记。我希望看到一些带有该标签的F#代码?我只看到'lambda-calculus' –

回答

2
(\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) 

由最后一个规则(收缩)。

+0

Thnx为你的答案 - 它真的有帮助!我想我得到你在说什么。所以,让我直截了当地说,删除冗余括号的原因是因为没有更多的参数可以传递给函数体,对吧? –