The Power of Composition (Scott Wlaschin) を読んで感じたこと - 合成を考えていると Currying と Monad に行き着く
(ohyecloudy.com)- 再利用方法の一つである合成は、型と関数に関わる
- 型は AND または OR で合成する
- input の数と output の数が同じときは、関数合成は簡単だ
- 関数の output を次の関数の input に渡せば終わり
- 数が違うときは、これを解決する方法が必要
- input の数が多いときは Currying(カリー化)
- input の数を一つにしてくれる
- output の数が多いときは Monad(モナド)
- output の数を一つにして、処理済みまたは未処理として区別する
- 処理済みのものは次の関数へそのまま渡す
- 未処理のものは関数で処理を試みる
- なるほど、これが Monad だった
- output を Monad に入れて、bind で関数を組み合わせる
- output の数を一つにして、処理済みまたは未処理として区別する
関数合成を通して説明しながら「なぜ?」への答えを示してくれるので、とても理解しやすいです。モナドを箱に入れて取り出す、といった説明の文章を見たときは、あまりよく理解できませんでした。今思えば、「なぜ」が抜けていた文章だったからだと思います。
2件のコメント
とてもよく読みました〜
よく読みました。こうして見ると理解しやすいですね