sig
  type 'a m = 'a
  external return : '-> 'WithM.Identity.m = "%identity"
  val bind : ('-> 'b) -> '-> 'b
  val bind_rev : '-> ('-> 'b) -> 'b
  val error : exn -> 'a
  val catch : (unit -> 'a) -> (exn -> 'a) -> 'a
end