generated at
Eitherモナド
成功時だけでなく、失敗時にも値が返せるモナド
Maybeモナドの機能強化版のようなモナド

Maybeモナドとの比較
Habit Tracker
失敗成功
Maybe aNothingJust a
Either a bLeft aRight b
「Right」は「正しい」という意味と掛けている

hs
data Either a b = Left a | Right b


実装
hs
instance Monad (Either e) where return x = Right x Right m >>= k = k m Left e >>= _ = Left e
Maybeモナドとほぼ同じだねmrsekut
ミソは何故型引数を2つ取るEither型でMonad型クラスのインスタンスにできるか、である


関数


参考
この記事とその続きの記事、ユースケースを定めてEitherモナドを再実装するような流れなので、Eitherモナドを全く知らない人からしたら、Either型と、モナドの嬉しさがよくわかるのでは