Lambda The Ultimateは、ラムダ計算のラムダが、過去、現在、未来のすべてのプログラミング言語のすべての組み込み概念を効果的に実装できるという考えを指します。クラス、モジュール、パッケージ、オブジェクト、メソッド、制御フロー、データ構造、マクロ、継続、コルーチン、ジェネレーター、リスト内包表記、ストリームなど。
偶然にも、その究極の性質には、匿名関数の立場が含まれます。しかし、ラムダは、そのコアでは、匿名関数だけに制限されていません。彼らはそのように教えられますが、ラムダの本質は名前のない数学関数よりもはるかに深くなります。言い換えれば、私は問題を取ります:
私はラムダの意味を理解しています。匿名関数の概念はシンプルかつ強力ですが、このコンテキストで「究極」が何を意味するのか理解できません。
実際問題として、値による呼び出し/適用ではない(数学関数である)構文の抽象化(「マクロ」)としてラムダを使用することは、ラムダが本当にすべてのプログラミング言語処理システムのコア。
理論について:バートランドラッセルのパラドックスと素朴な集合論における理解の公理(および拡張)との興味深い関係があります。ラムダは、セットビルダー表記が設定する関数に対応します。ラムダは関数ビルダー表記です。(lambda(x)(* xx))と評価されるもの(二乗する関数)との間には、通常無視される重要な違いがあります。一般的に2つを区別できない場合、つまり、表記法と表記法(ChurchとFregeの両方が犯した間違い)を区別できない場合は、逆説に反します。セットとフレージュの場合、エラーを示すのはセビリアのバートランドラッセルの理髪師です。機能と教会のために、それはアラン・チューリングの停止オラクルです。
パラドックスは良い、実用的なものであることに注意してください。EVALは表現可能であり、ラムダは単なる関数以上のものを意味します。反対が矛盾につながると仮定することは望ましい結果です。これは、適切な健全性テストとして機能します。ラムダは単なる機能を表現するだけでは、究極のものになることはほとんどありません。
ラケット(以前のPLTスキーム)は、実用的なプログラミング言語は「ちょうどラムダ」上でゼロから構築できるという考えを引き続き訴追しています。
ShuttによるKernelは、ラムダは実際には究極の抽象化ではないと主張します。彼は、さらに原始的な概念(ギリシャ語ではvauと呼ばれる)があり、それはSussmanにFEXPRとして知られていました。
Felleisinと会社(Racketの場合)は、フェーズまたはメタレベルの概念を使用してShuttのvauのパワーの多くを取得します。 「ステップ」、および「ステップ」は実際には時間的に完全に区別されません)。(したがって、彼らは、より高い位相のラムダがvauに十分に近似していると主張します。)実際、彼らは位相がFEXPR よりも優れていると主張しています。要するに、「FEXPRは強力すぎます」(Shuttが反対しているWandの研究を参照)。
ブライアン・スミスの3-Lisp、「プログラミング言語の手続き的反映」は、表記法(記号/言語/プログラム)と表示(もの/参照元/値/結果)を明確に区別する線に沿って、LISPに似た言語の理論の厳密な再定式化を試みます)。http://dspace.mit.edu/handle/1721.1/15961
ミッチェル・ワンドの「The Theory of FEXPRs Trivial」は、Kent PittmanがFEXPRのために作成した(一時的な?)moreにさらに釘を送ります(Felleisenのように、FEXPRをコンパイルしすぎると主張する)。
ポール・グラハムは、「On Lisp」の強さと長さで、真の力は、値の変換(数学関数)ではなく、構文の変換(マクロ)としてのラムダであると主張しています。Plotkinの適用可能なラムダ計算の開発は、Plotkinがその値ごとの呼び出し/適用サブセットに教会の計算を制限しているため、いくぶん対照的であると考えることができます。もちろん、適用部分を効率的に処理することは非常に重要であるため、ラムダの使用に特化した理論を開発することが重要です。(PlotkinとGrahamは互いに反論しません。)
実際、一般的に、LambdaがUltimateであるという概念は、効率と表現力の間の永遠の議論に関するそのようなねじれにすぎません。それは、ラムダが表現力の究極のツールであり、十分な研究を考えると、最終的に効率の究極のツールであることが最終的に証明される立場です。言い換えれば、望むなら、プログラミング言語の未来を、ラムダ計算の実際に関連するすべての断片を効率的に実装する方法の研究にほかならないと考えることができます。
Landinの「The Next 700 Programming Languages」、http: //www.cs.cmu.edu/~crary/819-f09/Landin66.pdfは、LambdaがUltimateであるという概念の開発に役立つアクセス可能なリファレンスです。