如何在 lambda 演算中正确减去 TRUE 和 TRUE?
How to substract TRUE and TRUE in lambda calculus correctly?
我正在尝试了解 lambda 演算。但是,我有点卡在这个表达式上:TRUE 和 TRUE。我不知道你如何从
((\T F -> T) (\T F -> T))
到
(\F T F -> T)
,不是
(\F -> (\T F -> T))
\ 是 lambda 签名
(\F T F -> T)
和
(\F -> (\T F -> T))
是一样的。
https://en.wikipedia.org/wiki/Lambda_calculus_definition#Notation:
- Outermost parentheses are dropped:
M N
instead of (M N)
- [...]
- The body of an abstraction extends as far right as possible:
λx. M N
means λx. (M N)
and not (λx. M) N
- A sequence of abstractions is contracted:
λx. λy. λz. N
is abbreviated as λxyz. N
特别是,
(\F -> (\T F -> T))
可以写
(\F -> \T F -> T)
因为我们可以去掉多余的括号,并且外层 lambda 的主体尽可能向右延伸,这样就可以写成
(\F -> \T -> \F -> T)
或
(\F T F -> T)
根据最后一条规则(收缩)。
我正在尝试了解 lambda 演算。但是,我有点卡在这个表达式上:TRUE 和 TRUE。我不知道你如何从
((\T F -> T) (\T F -> T))
到
(\F T F -> T)
,不是
(\F -> (\T F -> T))
\ 是 lambda 签名
(\F T F -> T)
和
(\F -> (\T F -> T))
是一样的。
https://en.wikipedia.org/wiki/Lambda_calculus_definition#Notation:
- Outermost parentheses are dropped:
M N
instead of(M N)
- [...]
- The body of an abstraction extends as far right as possible:
λx. M N
meansλx. (M N)
and not(λx. M) N
- A sequence of abstractions is contracted:
λx. λy. λz. N
is abbreviated asλxyz. N
特别是,
(\F -> (\T F -> T))
可以写
(\F -> \T F -> T)
因为我们可以去掉多余的括号,并且外层 lambda 的主体尽可能向右延伸,这样就可以写成
(\F -> \T -> \F -> T)
或
(\F T F -> T)
根据最后一条规则(收缩)。