関数型プログラミング入門

関数型パラダイムの考え方と特徴を学びます。

関数型プログラミングは、関数を第一級オブジェクトとして扱う考え方。Pythonでも一部採用されており、近年再注目されています。

日野 こむぎ(普段) 日野 こむぎ

関数型って、関数だけで書くってことなの?

藤森 さやか 先生(笑顔) 藤森 さやか 先生

近いわ。
関数型プログラミングは、関数を「値」のように渡したり返したりできる考え方。
Haskell・Scala・Erlang・Clojureなどが代表的な関数型言語ね。

青木 澪(普段) 青木 澪

重要な概念は純粋関数・高階関数・イミュータブル・遅延評価など。
手続き型と発想が違うのよ。

桃井 すみれ(普段) 桃井 すみれ

Pythonでも書けるんですかぁ?
すみれ、気になるなぁ〜

青木 澪(普段) 青木 澪

そう。
map(), filter(), reduce(), lambda 式など関数型の機能はPythonにも入っているの。
完全な関数型ではないけど、部分的に取り入れることで簡潔なコードが書けるわ。

日野 こむぎ(普段) 日野 こむぎ

で、メリットは何なの?

藤森 さやか 先生(普段) 藤森 さやか 先生

副作用がないから「同じ入力なら必ず同じ出力」になる。
並行処理・テストがしやすく、バグが減るの。
マルチコア時代に再注目されているわ。

青木 澪(普段) 青木 澪

デメリットは慣れるまで難しいこと、状態を持つ処理が書きにくいこと。
だから完全な関数型ではなく、「マルチパラダイム」(オブジェクト指向と関数型の混在) が現代の主流ね。

桃井 すみれ(笑顔) 桃井 すみれ

いろんな考え方があるんですねぇ♪

確認クイズ

関数型プログラミングの特徴として正しいものはどれか。

  1. 変数の値を頻繁に書き換える
  2. 関数を値として扱える (高階関数)
  3. GOTO文を多用する
  4. クラス定義が必須
こたえを見る

正解: 2. 関数を値として扱える (高階関数)

関数型プログラミングの大きな特徴は 関数を第一級オブジェクト (値) として扱える (高階関数) ことです。副作用を避け、イミュータブルなデータを扱うのも特徴です。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。