「Algorithms: A Functional Programming Approach」はアルゴリズムというよりは、
どちらかというとアルゴリズムを最適化するテクニックを多く学べる感じだ。

第3章からが本番。
関数の簡約の様子が詳しく書かれている。
所々、おまけでヒープの変化の様子を描いた図もある。
Burstall-Darlington 変換の考え方が学べる。

第4章のListの節はなかなか面白かった。
細かな最適化の話なんだが、関数合成時の中間データを省くテクニックや、
計算速度的には余計な結合演算(++)を取り除いたりするテクニックが学べる。
(後者はちょっと目から鱗だった)
あとはTreeやArrayの節でも同じように細かなテクニックが述べられている。

第5章はスタックやヒープなどのデータ構造を表現する方法が学べる。
ここは、個人的にはたいして面白くなかったな。
手続き型言語でよくあるデータ構造を関数型でいかに表現するかという事で、
まぁ実装方法は予想の範囲を超てなく、驚きがなかったから。
ただ、分かりやすくはあった。

第6章はソーティングの話だが、クイックソートよりも
マージソートやヒープソートの方が関数型では適している事が分かる。
各アルゴリズムの比較で、効率の計算が出てくるが、ちょっと難しいな。
なぜその計算になるのかの説明がちょっと簡略気味だ。
ただ、ここでも簡約の様子が図入りで載っているのは理解に助かった。

第7章からは、ちょっと飽きてきて、さらっと斜め読みしかしてない。