Control.Supermonad
class Bind m n p
class Return m
class Fail m
type family Monad m :: Constraint where ...