>>">>>>はControl.Arrowのもの
code:hs
usecase :: Request -> Either Text Request
usecase =
validate1
=> validate2
=> validate3
>> fmap coanonicalizeEmail
code:hs
-- こう書いても同じ
usecase =
validate1
=> validate2
=> validate3
=> Right . coanonicalizeEmail
ちなみにこう書くのは間違い
code:hs
usecase :: Request -> Either Text Request
usecase = do
validate1
validate2
validate3
これは3つのvalidateを独立で行っている
今回のケースではこれでも問題ない
もしvalidate1のRightの結果を返す時に何かしら文字列を操作された場合は結果が変わる
例えばRight $ toLower rと書いてたりすると変わる
参考
最後の方、Arrowの話をしているみたいになっているなmrsekut.icon