見出し画像

関数型プログラミング事始め (43) 総集編(2) [本編最終回]

関数型プログラミングがはじめての方へ贈る入門の書
前節:総集編(1) 次節:オブジェクト指向と関数型
参考書:
・五味 弘「はじめてのLisp関数型プログラミング」技術評論社(2016)
・大山口 通夫、五味 弘「プログラミング言語論」コロナ社(2008)
・五味 弘「関数型プログラミングと数学(ITと数学)」技術評論社(2021)

関数型プログラミングの記事の総集編として、今までの記事の目次を一覧で紹介する後編になります。関数型プログラミングの記事は40編以上になりますが、前編とこの後編を読んでもらえれば、関数型プログラミングの利点とそして欠点、その対応などがわかります。この関数型プログラミングはプログラミング全般の指針になりますので、ぜひ読んで実践してください。

ここでは関数型プログラミングの記事の目次を紹介することで、関数型プログラミングの総集編としています。その第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) 関数型プログラミング

4章. 関数型プログラムの評価

4.1 通常のプログラムとしての評価

(1) 関数のサイズ

(2) 関数の個数

(3) 引数の個数

(4) グローバル変数の個数

(5) ローカル変数の個数

4.2 定量的な計測が困難な評価(通常のプログラム版)

(1) サイクロマティック複雑度

(2) 結合度

(3) 凝集度

4.3 関数型プログラムの評価

(1) 再帰呼び出し

(2) 高階関数

総集編

総集編(1)

総集編(2) [本編最終回]

増補版

オブジェクト指向と関数型


いいなと思ったら応援しよう!

五味弘
よろしければサポートをお願いします!