Chapter 02

いくつかの重要な用語

とっくり
とっくり
2022.06.14に更新

最初にいくつかの基本的な言葉を確認しておきます。大丈夫です、このページでは例のモナドとかああいうこわいのは出てきません。(もっとずっと後のほうで出てくる予定)

関数

英語のFunctionをなんで関数って訳しちゃったんだろうと思うのですが、「機能」という直訳のほうがプログラミング的にはしっくりきますよね。もちろんプログラミングの文脈で関数と言ったら、引数を受け取って返り値を返す、あれのことですよね。

純粋関数

関数の中でも、引数以外の入力、返り値以外の出力(変数の変更とかDBとかDOMとかファイルとか通信とか)を持たないものを純粋関数と言います。

副作用

純粋関数が持たないもの(変数の変更とかDBとかDOMとかファイルとか通信とか)を副作用(Side Effect)と言います。

関数型プログラミングと関数型言語

そのアプリケーションで実現したい処理のうち、できるだけ多くの部分を純粋関数で書くと幸せになれます(後述)。そのために様々なテクニックが発明されています。それらのテクニックを使って副作用をできるだけ狭い範囲に閉じ込め、できるだけ純粋関数の部分を増やそうとするプログラミングスタイルを関数型プログラミングと呼びます。余談ですがFunctional Programmingを直訳して「機能的なプログラミング」と言ったほうが実態に近いような気がします。

関数型プログラミングはどのような言語でも可能ですが、特に関数型プログラミングを行うための便利な機能を最初から用意している言語が関数型言語です。

関数型言語とは何か、という定義についてはいろいろありますが、この記事では言語自体には関心がないので深入りしません。