前回のふりかえり(第4章)
- 再帰
- maximumの再定義
- replicateの再定義
- takeの再定義
- reverseの再定義
- repeatの再定義(そのままだと終わらないので、takeと組み合わせる)
- zip
- elem
- クイックソート
再帰的に考える
- 基底部を見極める
- 解くべき問題をより小さな部分問題へと分割する方法を考える
第5章 高階関数
- 高階関数 引数として関数をとったり戻り値として関数を返したりできる
- カリー化 複数の引数を受け取れるかのように見えたやつ
関数は何か材料を受け取って何かを作り出す小さな工場であるという認識
カリー化と部分適用(JavaScriptとHaskell) - Qiita
とりあえずカリー化は関数のネストで、部分適用は引数の一部利用。
zipWith
flip
map
例を見ると地味に面倒。mapはリスト内包表記で代替できるけど、mapのmapとかになってくるmapのほうが楽。って本に書いてあるけど、結構どっちも微妙だったりする。
filter
mapとfilterは要所要所で使い分けたらいいと思います。
クイックソート
flipの応用
5.6あたりでしゃべる
mapとfilterさらなる例
Haskellは怠惰なので、最初の値を拾えたら評価をやめる。
コラッツの問題
map関数に複数の引数を与える
カリー化と部分適用とクロージャ
P73まで終わり。