質問

ラムダ計算において(λX。λのY。λS。λZ、X秒(Y S、Z))がどのように我々はこれを説明することができる2つの教会の数字の加算のために使用される、任意の良いリソースは関数型プログラミングのためのラムダ計算ありますか?あなたの助けがはるかに高く評価される。

役に立ちましたか?

解決

実際にλF1。 λF2。 λsの。 λZ。それは(S F2 z)を置換する効果であるため(F1 S(S F2 Z))加算を計算し、数が "ゼロ" の内側(S F1 Z)に、F2で表される。

例:のは、F2のための2つ、展開された形でs s zを見てみましょう。 s z:f1は1です。 F2によってその最後のzを交換し、あなたがs s s z、3のための拡張形式を取得します。

このは申し訳ありませんが、黒板と手を振って容易になるだろう。

他のヒント

ラムダ計算では、あなたはそれが誘導操作の面でデータ型をコーディングします。

:例えば、ブール入力二つの値AおよびBを取り込み、またはbのいずれかを返すだけ選択関数であります
                      true = \a,b.a   false = \a,b.b

自然数の使用は何ですか?その主な目的は、計算にあります 反復に結合を提供しています。そこで、我々は、オペレーターとして自然数をコーディング すなわち、入力に関数f、値xをとり、そしてアプリケーションを繰り返します n倍のX上のF:

                        n = \f,x.f(f(....(f x)...))

Fのn個の出現である。

さて、あなたはxから始まるF N + m回機能を反復する場合 あなたは、それは(n F x)をn回繰り返しを開始し、その後、Mのために反復しなければなりません 追加回、前の結果から始めて、それは

                                m f (n f x)
あなたはn * m回の反復処理したい場合は、

同様に、m回反復する必要があります (2つの入れ子ループ内など)反復n回Fの動作は、つまり

                                 m (n f) x  

データ型の前符号化は、より正式用語で説明されています コンストラクタと対応エリミネーターの(いわゆる ボーム-Berarducciエンコーディング)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top