関数型プログラミング事始め (43) 総集編(2) [本編最終回]
関数型プログラミングがはじめての方へ贈る入門の書
前節:総集編(1) 次節:オブジェクト指向と関数型
参考書:
・五味 弘「はじめてのLisp関数型プログラミング」技術評論社(2016)
・大山口 通夫、五味 弘「プログラミング言語論」コロナ社(2008)
・五味 弘「関数型プログラミングと数学(ITと数学)」技術評論社(2021)
ここでは関数型プログラミングの記事の目次を紹介することで、関数型プログラミングの総集編としています。その第2回(後編)となります。
前回の記事では前編となる「総集編(1)」を掲載していますので、そちらも参照してください。
そしてこの記事が関数型プログラミングシリーズの本編最終回になります。後日、不定期に付録記事を公開していく予定です。
3章. 関数型プログラミング手習い
3.1 再帰プログラミング
(1) 繰り返し文は副作用あり
(a) 繰り返し文の実行
(b) 繰り返し文の副作用
(2) 再帰プログラミングは副作用なし
(a) 再帰プログラムの実行
(b) 再帰プログラムの副作用
(c) 引数の実装
(d) 再帰プログラミングの評価
(3) 再帰プログラムの作り方
(a) 再帰とは、その停止条件とは
(b) 数学的機能法3.2 高階関数
3.2 高階関数
(1) はじめての高階関数
(2) 高階関数のライブラリ
(a) map関数
(b) reduce関数
(c) 高階関数ライブラリ虎の巻
(3) 高階関数の演習
(a) 関数合成
(b) カリー化
(c) クイックソート
(d) 高階関数の実行速度と了解性
3.3 遅延評価
(1) 遅延評価手始め
(2) 遅延評価の例
(3) マクロによる構文糖衣
(4) 遅延評価の演習
(a) tarai関数(たらい回し関数)
(b) 遅延評価版のtarai関数
(c) チート版のtarai関数
(4) 遅延評価の演習(続き)
(d) 無限リスト
(5) 評価戦略
(a) 左側優先 v.s. 右側優先
(b) 内側優先 v.s. 外側優先
(c) 必須優先戦略(call by need)
3.4 ラムダ計算
(1) ラムダ計算の規則
(2) ラムダ計算の記法
(3) ラムダ計算の性質
(4) ラムダ計算の例
(a) カリー化
(b) チャーチ数
3.5 イミュータブルデータ
(1) リスト
(2) 配列
(a) 配列はミュータブル
(b) 破壊的操作がない配列はイミュータブル
(c) ランダムアクセスリスト
(3) イミュータブルデータの例
(a) ツリートラバース
(b) 待ち行列
(c) 2本のリストによる効率の良い待ち行列
(d) エイトクイーン
3.6 状態の繰り込み
(1) 豚の貯金箱
(a) 手続き型プログラミング
(b) オブジェクト指向プログラミング
(c) 関数型プログラミング