data EitherC : Type -> (Type -> Type) -> Type -> Type
runEitherC : Syntax sig => Free (EitherC e :+: sig) a -> Free sig (Either e a)
throw : Inj (EitherC e) sig => e -> Free sig a
catch : Inj (EitherC e) sig => Free sig a -> (e -> Free sig a) -> Free sig a
orThrow : Syntax sig => Inj (EitherC e) sig => Maybe a -> Free sig e -> Free sig a