2016-09-06 5 views
0

ラムダ計算の質問、必要な場合:ラムダ計算 - 複数のパラメータが

TRUE = lambda x y . x 
FALSE = lambda x y . y 
1 = lambda s z . s z 
2 = lambda s z . s (s z) ... 

BoolAnd = lambda x y . x y FALSE 
BoolOr = lambda x y. x TRUE y 
BoolNot = lambda x . x FALSE TRUE 

If I want to know the result of BoolNot 1: 
BoolNot 1 
(lambda x . x FALSE TRUE)(lambda s z . s (s z)) 
(lambda s z . s z) FALSE TRUE 
(lambda x y . y) (lambda x y . x) 

はここで、xとyの2つのパラメータが必要ですが、ここでしか1、 はどのように私はこの計算を続けることができていますか?

答えて

1

λ x y. Eに別の引数yを取り、評価するλx. (λy. E)ための「速記」です。

したがって、恒等関数である

(λ x y. y) (λ x y. x) 

==> (λx. (λy. y)) (λ x y. x) 

==> λy. y 

+0

ありがとうございますが、λyとは何か教えてください。どういう意味ですか? – Andy

+0

@Andyあなたが何を求めているのかは分かりませんが、「λ」は小文字のギリシャ文字「ラムダ」です。 – molbdnilo

0

時間に1つの議論を適用すると考えてください。そして、各ステップでは、関数を1つ少なくします。それは(not 1)を行うには意味がありませんが、trueが使用されていない変数となるので、結果は恒等関数であり、したがって、それはy

関連する問題