SKIコンビネーター計算(またはラムダ計算)の目的は何ですか?その使用の実際の例は何ですか?


8

私はそれが何であるかを理解していますが、それがアルゴリズムまたは何かのためにどのように使用されるかはわかりません。多分私は何かが足りない。私はそれをよりよく理解できるように、それがどのように使用されるかの例を私に与えるために誰かを必要としています。


2
Unlambdaなど、組み合わせロジックに基づく難解なプログラミング言語がいくつかあります。こちらもご覧ください。詳細については、記事のリンクをご覧ください。
Anton Trunov 16

回答:


11

ラムダ計算の明らかなアプリケーションは、関数型プログラミング言語(Lisp、ML、Haskellなど)、および匿名関数をサポートする言語です。

コンビネーター計算については、「実際のアプリケーション」が必要ですか?たとえば、チューリングマシンは「現実の世界」ではほとんど使用されていませんが、計算理論の基礎を形成しています。Combinator Calculiの便利な機能の1つは、チューリングマシンよりも単純なシステムであることです。他のシステムがチューリング完全であることを証明したい場合は、チューリングマシンをシミュレートできることを示すよりも、コンビネーターをどのようにシミュレートできるかを示す方が簡単な場合があります。


1
もちろん、関数型言語のコンパイルにはコンビネーター使用されました(ただし、SKI計算自体ではありません)。
cody

1
@cody回答を投稿してください!それは私が知っていることではないので、私は答えを編集したくないです。
David Richerby 16

3
たとえば、Scalaの型システムは、SK計算を埋め込むことでチューリング完全であることが示されています。(ユニバーサル)チューリングマシンの埋め込みの不合理な複雑さを想像することすらできません。皮肉なことに(名前を付けると)、Turinfの完全性はTuring Machinesではめったに示されません。SQLは、ルール101を備えた巡回タグシステム、HTML + CSS、「Move、Branch if Zero、Decrement」命令をエンコードしてIntel MMUを実装することにより、TCであることが示されました。
イェルクWミッターク

@JörgWMittagre:「HTML + CSS with Rule 101」は、「Rule 110」という意味ですか?
RBarryYoung

@RBarryYoung:もちろん、愚かな誤植です。コードはここにある:github.com/elitheeli/stupid-machines
イェルクWミッターク

5

SKIは、いくつかの論理的な公理を理解するのに役立ちました。

たとえば、ヒルベルト式の(直観的な)含意の公理化は、

abcabacaba

これらの公理を初めて見たとき、なぜ地球上でそれらが機能するのか疑問に思いました。確かに、それらが保持していることを確認するのは簡単です。しかし、なぜこれらで十分なのでしょうか。つまり、これらの2つの仮説を単独で使用するだけで、他のすべての意味のあるトートロジーを(法則ポネンを通じて)証明するのに十分なのでしょうか。ミステリー…それとも?

SKSKSK


2

MicrosoftのLINQ(Language INtegrated Query)をご覧ください。式ツリーを操作および変換するために、ラムダ計算を広範かつ非常に直接使用します。おそらく最も完全で高度な例は、データベースサーバーに委任できる式ツリーの部分を分離する複雑な変換を効率的に実行するLinq2SQL(SQL Server実装)でしょう。

これは、複数のソースからのデータを結合するクエリを可能にする最初のテクノロジーではありませんが、データベースサーバーの一括操作機能を活用するための依存関係の解きほぐしを自動化する最初のテクノロジーである可能性があります。それは完璧ではありません(時にはそれを手伝う必要があるかもしれません)が、人から得られない細部に注意を払って、うなり声を非常にうまく機能させます。

あなたそれを手助けなければならないとき、微積分を理解することはあなたにそれを悩ましているものを理解するのにあなたを遠くへ連れて行くでしょう-それでそれは何の用途に加えて?機械がそれをするのになぜこれを学ばなければならないのですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.