失敗し得る関数を書くとき、どんな言語で書いてても
・わかりやすさ
・読みやすさ
を考慮して、戻り値の値が
<Bool, (T | String)> みたいな感じになって、
const [success, resultOrErrorMessage] = f(x);
if (!success) {
return resultOrErrorMessage;
}
...
的な感じになるモヤる気持ちを抱えて生きている(これが悪いと思っているわけではない)
Eitherは、3つの失敗し得る関数の結果を使って何かを実行するときに、
const a = af();
const b = bf();
const c = cf();
c.flatMap(x => b.flatMap(y => a.map(z => f(x, y, z))))
みたいになるのが辛い
(今日のまとめ)