The KURE Monad

KureM is the minimal structure that can be an instance of MonadCatch.
The KURE user is free to either use KureM or provide their own monad.
KureM is essentially the same as EitherString, except that it supports a MonadCatch instance which EitherString does not (because its fail method calls error)
A major advantage of this is that monadic pattern match failures are caught safely.