人間はコンピューティングを発見した、または発明したと思いますか?
チューリング マシンとチャーチのラムダ微積分は 1936 年に互いに独立して形式化され、しかも両方とも普遍的な表現力を備えている (すべてを計算できる) ため、私は発見に傾いています。非常に異なりますが、100% 同等です。
私はハードウェア コンピューターの発明について話しているのではありません。ハードウェア コンピューターはあらゆる形式を取り、電子回路とそのトランジスターのおかげでこれらの概念を一般に実装できます。私がここで話しているのは、計算ロジックとそれに付随する計算的思考についてです。あれは空中に浮かんで、捕まえられて檻に入れられるのを待っていました。
数学のレッスン、特に関数を思い出してみましょう:
f(x) = 2*x とします。これは、渡された値を 2 で乗算する関数です。ダブルという名前にしましょう。
つまり Double(3) = 2*3 = 6
そして Double(4) = 2*4 = 8.
簡単。
f(x) = x 1 または Increment の場合も同様です。
増分(3) = 3 1 = 4
増分(4) = 4 1 = 5
とても簡単です。
ラムダ計算は同じ方法で書くことができます:
f(x) = x は、たとえば、渡された値を返す関数です。
この関数はI、または馬鹿、またはアイデンティティと呼ばれ、ラムダ計算の基礎の 1 つです。
つまり、Identity(3) = 3
そして Identity(4) = 4.
簡単すぎます。
あまり明らかではありませんが、lambda-calculus がその有用性を発見したものもあります。
f(x, y) = x は K、Kestrel、または Constant: 最初の引数を返す関数です。
定数(3, foo) = 3
定数(foo, 5) = foo
もう 1 つ:
f(x) = x(x) は M、モッキンバード、または自己適用です。
しかし、数字と一緒に使用するにはねじれすぎています:
f(3) = 3(3) = 3 は意味がありません。引数 3 は、引数とともに順番に使用される関数である必要があります。
g(x) = foo これは毎回 foo を返す関数です。いいですね、彼女をダミーと呼びましょう。
つまり、自己適用が f(x) = x(x) である場合
そしてダミーは g(x) = foo
つまり、自己適用(ダミー) = ダミー(ダミー) = foo
確かに、Dummy はそれ自体に適用され、Dummy は常に foo を返すため、問題なく foo を取得できます。
ラムダ計算の組み合わせの性質により、理解と操作が非常に簡単になるだけでなく、再発見も簡単になります。
特定の数の用語を使用して、考えられるすべての関連性と組み合わせをテストするだけで、実際に異なる便利な関数をすべて見つけることができます。
たとえば、f(x, y, z) = x(y(z)) が非常に便利な関数であることを発見し、それを B、Bluebird と名付けました。または作成します。
必要なのは、2 つの関数と値を渡して、この 3 番目の引数に対して実行された一連の操作の結果を取得することだけです。
Compose(インクリメント, インクリメント, 3) = インクリメント(インクリメント(3)) = インクリメント(4) = 5
Compound(Double, Double, 10) = Double(Double(10)) = Double(20) = 40
Compound(Compose(Increment, Increment), Double, 10) = (Compose(Increment, Increment))(Double(10)) = Increment(Increment(20)) = Increment(21) = 22
私はラムダ計算のすべての便利な関数を再発見し、それらを JavaScript で実装するプロジェクトに着手しています。
友人のクロードの助けを借りて、考えられるすべての組み合わせを生成してテストすることで、より迅速に作業を進めるつもりです。
彼は成功するでしょうか?そして私たちは、1936 年にアロンゾ教会が経験したことを追体験し、感じるでしょうか?
さらにクレイジーな希望: これらの組み合わせの完全性を探索することで、新しいことを発見できるでしょうか?
以上がラムダ計算の数学の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。