Either package:fused-effects

A carrier for an Error effect.
A carrier for a Fail effect, returning the result as an Either String. Failed computations will return a Left containing the String value passed to fail.
A carrier for a Throw effect.
Lifts an Either e into Monad m with effect Throw e