sig
  type +'a m
  val return : 'a -> 'a WithM.MonadError.m
  val bind :
    ('a -> 'b WithM.MonadError.m) ->
    'a WithM.MonadError.m -> 'b WithM.MonadError.m
  val bind_rev :
    'a WithM.MonadError.m ->
    ('a -> 'b WithM.MonadError.m) -> 'b WithM.MonadError.m
  val error : exn -> 'a WithM.MonadError.m
  val catch :
    (unit -> 'a WithM.MonadError.m) ->
    (exn -> 'a WithM.MonadError.m) -> 'a WithM.MonadError.m
end