Program > Haskell > Haskell入門 > 第1章 はじめてのHaskell
#html{{
div class="alert alert-info">学習メモ</div>
table border="0" cellpadding="5"><tr><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4774192376/vertex9-22/" target="_blank"><img src="" border="0"></a></td><td> </td><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4774192376/vertex9-22/" target="_blank">Haskell入門 関数型プログラミング言語の基礎と実践</a><br>本間 雅洋<br>技術評論社<br>2017-09-27<br>¥3608</td></tr></table>
}}
関数型プログラミング言語は、「ラムダ計算」という計算モデルが礎にあります。
(参考)日経ソフトウエア 2008年3月号 55ページ
#html{{
table class="table table-bordered">
thead>
tr><th colspan="2">分類</th><th>基礎となる計算モデル</th><th>事例</th></tr>
/thead>
tbody>
tr><td>命令型プログラミング言語</td><td>手続き型言語</td><td>チューリングマシン</td><td>C, Java</td></tr>
tr><td rowspan="3">宣言的プログラミング言語</td><td>問合せ型言語</td><td>関係モデル</td><td>SQL</td></tr>
tr><td>関数型言語</td><td>ラムダ計算</td><td>Lisp, Haskell</td></tr>
tr><td>論理型言語</td><td>一階述語言語</td><td>Prolog</td></tr>
/tbody>
/table>
}}
(参考)ラムダ計算 - Wikipedia https://w.wiki/3aqc
ラムダ計算(ラムダけいさん、英語: lambda calculus)は、計算模型のひとつで、計算の実行を関数への引数の評価(英語: evaluation)と適用(英語: application)としてモデル化・抽象化した計算体系である。
ラムダ算法とも言う。
関数を表現する式に文字ラムダ (λ) を使うという慣習からその名がある。
アロンゾ・チャーチとスティーヴン・コール・クリーネによって1930年代に考案された。
1936年にチャーチはラムダ計算を用いて一階述語論理の決定可能性問題を(否定的に)解いた。
ラムダ計算は「計算可能な関数」とはなにかを定義するために用いられることもある。
計算の意味論や型理論など、計算機科学のいろいろなところで使われており、特にLISP、ML、Haskellといった関数型プログラミング言語の理論的基盤として、その誕生に大きな役割を果たした。
ラムダ計算は1つの変換規則(変数置換)と1つの関数定義規則のみを持つ、最小の(ユニバーサルな)プログラミング言語であるということもできる。
ここでいう「ユニバーサルな」とは、全ての計算可能な関数が表現でき正しく評価されるという意味である。
これは、ラムダ計算がチューリングマシンと等価な数理モデルであることを意味している。
チューリングマシンがハードウェア的なモデル化であるのに対し、ラムダ計算はよりソフトウェア的なアプローチをとっている。
Haskellは、型付きラムダ計算に分類されます。
(参考) 型付きラムダ計算 - Wikipedia https://w.wiki/4iDA
型付きラムダ計算(英: typed lambda calculus)とは、無名の関数の抽象表現にラムダ ({\displaystyle \lambda }\lambda ) というシンボルを用いる型付き形式手法である。
型付きラムダ計算は基礎的なプログラミング言語でもあり、MLやHaskellなどの型付き関数型言語の基盤であり、さらには型付き命令型プログラミング言語の間接的な基盤とも言える。
また、カリー・ハワード同型対応によって数理論理学と証明論とも密接に関連しており、圏論のクラスの内部言語と見なすこともできる。
例えば単純な型付きラムダ計算はデカルト閉圏 (CCC) の言語である。
ある観点から見れば、型付きラムダ計算は型を持たないラムダ計算を改良したものと言えるが、別の観点からは、より根本的な理論と見ることもでき、型を持たないラムダ計算の方が型が1つしかない特殊ケースと見ることができる。
#html{{
iframe width="560" height="315" src="https://www.youtube.com/embed/p9dv0RH4s60" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
}}