関数型プログラミング以外のラムダ計算?


21

私は大学生です。現在、ラムダ計算を勉強しています。ただし、これがなぜ私にとって役立つのかを正確に理解するのはまだ困難です。関数型プログラミングをたくさん行うと便利かもしれませんが、関数型プログラミングを学ぶのにそれは本当に必要ではないと思います、どう思いますか?

第二に、コンピューターサイエンスの領域内ではあるが関数型プログラミング言語以外でのLambda Calculusの使用はありますか?

回答:


15

ラムダ計算は、論理、カテゴリ理論、型理論、形式検証などの基本です。基本的に、プログラミング言語のセマンティクスと形式論理に関係するものです。これらの分野で働く人々は、その利点に疑問を抱かないほど根本的な形式主義です。

関数型プログラミングの本質を教えてくれるので、関数型プログラミングを理解するのに非常に役立つと思います。機能、アプリケーション、置換。これに基づいて、機能プログラムとそれらの変換について推論するスキルを構築できます。高階関数は簡単です。

ラムダ計算なしで関数型プログラミングを学ぶことはできますが、それなしでは関数型プログラミングを真に理解することはできません。


ご回答ありがとうございます。ラムダ計算が学習に役立つ理由として、フォーマル検証が最も良い理由だと思います。面白いことに、次の学期にはフォーマル検証のコースを行います。また、ラムダ計算を使用して、命令型またはオブジェクト指向型など、任意の言語で記述されたソフトウェアの正式な検証を行いますか?
ジェイコブ

1
正式な検証を行うときにラムダ計算を直接使用することはできませんが、正式な検証の基礎に表示されます。多くの場合、仕様の記述には、命令型/ OOコードであっても関数型言語での記述が含まれます。
デイブクラーク

さて、それはたくさんのおかげで面白いです、今、私はこれを勉強するもう少し理由があります。ラムダ計算を使用して、非機能言語(低レベル)を設計していることを知っていますか?
ジェイコブ

1
アルゴル。スカラ。最終的に、あなたの質問に答えることは困難です。ラムダ計算は(ほとんどの)言語設計者の共通知識の一部になっているため、明示的に使用されていなくても、言語設計に影響を与えます。SmalltalkまたはRubyのブロック、Javaの匿名クラスを検討してください。これらはクロージャであり、ラムダ計算の高次関数と密接にリンクしています。
デイブクラーク

オーケー、デイブ、どうもありがとう。
ジェイコブ

17

コンピュータサイエンスとロジック以外のアプリケーションを求めています。これは簡単に見つけることができます。たとえば、代数トポロジーでは、空間のデカルト閉カテゴリを使用すると便利です。nLab のトポロジ空間の便利カテゴリを参照してください。デカルト閉カテゴリーに対応する形式言語は、正確に計算です。これがどのように役立つかを非常に簡単な例で説明しましょう。λ

最初に、ウォームアップの演習として、関数f x = x 2 e x + log 1 + x 2で定義されるが微分可能かどうか尋ねられたとします。実際にそれを証明する必要はありません。それは微分可能な関数の合成であり、したがって微分可能であることを観察するだけです。つまり、定義の形式に基づいて簡単な結論を出したということです。f:RRf(x)=x2ex+log(1+x2)

さて、実際の例です。仮定誰かがかどうかの関数をお願いしますによって定義された F X = λ F CR)をX - X F 1 + T 2D T λ Y Rマックスx sin y + 3 f:RR

f(x)=(λf:C(R).xxf(1+t2)dt)(λy:R.max(x,sin(y+3))
連続的です。繰り返しますが、関数は -calculus を使用して定義され、連続マップmaxsinなどから開始されるため、すぐに「yes」と答えることができます。λmaxsin

計算のさまざまな拡張により、他の領域で同じ種類のことを行うことができます。たとえば、滑らかなトポスはデカルト閉カテゴリーであるため、実数の導関数およびリング構造から始まるλ -calculus を使用して定義されたマップ(および必要に応じて指数関数をスローできます)は自動的に滑らかになります。(実際、滑らかなトポスの主な目的は、「ディスクを無限に薄い二等辺三角形に切り分ける」などの意味のあることを言うことができる無能な無限小の存在です。λλ


1
入念な対応ありがとうございます。実際、私はコンピューターサイエンス内でラムダ計算の使用法を見つけようとしましたが、関数型プログラミングの外で、これが明確でない場合はおologiesびします。これをより明確に述べるために質問を変更しました。
ジェイコブ

ああ、あまりにもひどい、私はそれについて手の込んだ応答を書いていただろう。
アンドレバウアー

それについておologiesびします。追加情報を追加したい場合は、コメントを自由に追加してください:)
ジェイコブ

2
λ



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