関数型プログラミングは、関数を第一級オブジェクトとして扱う考え方。Pythonでも一部採用されており、近年再注目されています。
関数型って、関数だけで書くってことなの?
近いわ。
関数型プログラミングは、関数を「値」のように渡したり返したりできる考え方。
Haskell・Scala・Erlang・Clojureなどが代表的な関数型言語ね。
重要な概念は純粋関数・高階関数・イミュータブル・遅延評価など。
手続き型と発想が違うのよ。
Pythonでも書けるんですかぁ?
すみれ、気になるなぁ〜
そう。
map(), filter(), reduce(), lambda 式など関数型の機能はPythonにも入っているの。
完全な関数型ではないけど、部分的に取り入れることで簡潔なコードが書けるわ。
で、メリットは何なの?
副作用がないから「同じ入力なら必ず同じ出力」になる。
並行処理・テストがしやすく、バグが減るの。
マルチコア時代に再注目されているわ。
デメリットは慣れるまで難しいこと、状態を持つ処理が書きにくいこと。
だから完全な関数型ではなく、「マルチパラダイム」(オブジェクト指向と関数型の混在) が現代の主流ね。
いろんな考え方があるんですねぇ♪
確認クイズ
関数型プログラミングの特徴として正しいものはどれか。
- 変数の値を頻繁に書き換える
- 関数を値として扱える (高階関数)
- GOTO文を多用する
- クラス定義が必須
こたえを見る
正解: 2. 関数を値として扱える (高階関数)
関数型プログラミングの大きな特徴は 関数を第一級オブジェクト (値) として扱える (高階関数) ことです。副作用を避け、イミュータブルなデータを扱うのも特徴です。