Eitherモナド
成功時だけでなく、失敗時にも値が返せるモナド
Maybeモナドとの比較
table:Habit Tracker
型 失敗 成功
Maybe a Nothing Just a
Either a b Left a Right b
「Right」は「正しい」という意味と掛けている
型
code:hs
data Either a b = Left a | Right b
実装
code:hs
instance Monad (Either e) where
return x = Right x
Right m >>= k = k m
Left e >>= _ = Left e
Maybeモナドとほぼ同じだねmrsekut.icon
ミソは何故型引数を2つ取るEither型でMonad型クラスのインスタンスにできるか、である
関数
参考
この記事とその続きの記事、ユースケースを定めてEitherモナドを再実装するような流れなので、Eitherモナドを全く知らない人からしたら、Either型と、モナドの嬉しさがよくわかるのでは