2017-04-08 10 views
1

私はラムダ計算を理解しようとしています。しかし、私はちょっとこの表現についています:TRUEとTRUE。私はあなたがラムダ計算でTRUEとTRUEを正しく引く方法は?

(\F T F -> T) 

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

から得ることができる方法を見つけ出す、ない

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

\

graphical explanation

+1

なぜ 'F#'タグが追加されたのですか?私はそのタグでいくつかのF#コードを見たいと思いますか?私はあなたの答えに「ラムダ計算」 –

答えて

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です。我々は、冗長括弧を削除することができ、外側のラムダの本体は可能な限り右に延びているため

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

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

    を書き込むことができ、λxyz. N特に

としてreviatedこれを書き込むことができる。

(\F -> \T -> \F -> T) 
最後のルール(収縮)によって

または

(\F T F -> T) 

+0

Thnxしか見ることができません - 本当に助けになります!私はあなたが言うことを得ると思う。だから、私はこれをまっすぐにしましょう、余分な角かっこを取り除く理由は、関数本体に渡すことができる引数がないからです。 –

関連する問題