現在Scalaを勉強中なのですが、関数型言語はラムダ計算というものを基礎に置いていると聞いて調べてみました。
<参考文献>
"ラムダ計算 - Wikipedia"、
"ラムダ計算入門"
ラムダ計算というのは、大雑把に言えば、
「数や計算というものを、関数"そのもので"定義してみよう」
という考え方です。
ちょっと変わった考え方なので、理解するまでに苦労しますが、考え方がわかれば関数が数と同等という不思議な世界が生まれます。(だから例えば自然数(0,1,2,3…)とかいうのも”関数そのもの”で定義されているのがすごく不思議!)
個人的にとても驚いたのは、ラムダ計算を使えば if とかも定義でき、trueやfalseなども定義できるし、なによりすごいのは処理構造も定義できるということ。
しかもそれをλと文字、.(ピリオド)、()(括弧)、というたった4種の記号で定義してしまうのが驚きです。 関数と数を同等に扱うという計算自体の性質から、数・構造・関数の「同等な扱い」が可能になるので、驚くほど綺麗に処理構造が記述できるのがすごい。
ちょっとここに書ききれるほどの文章量じゃないので、自分の分かる範囲で追々追々書いていきます。
PR