sig
  type ok_value
  type t = ok_value t
  val create_ok : ok_value -> t
  val create_error : Unix_error.t -> t
  val is_ok : t -> bool
  val is_error : t -> bool
  val to_result : t -> (ok_value, Unix_error.t) Core_kernel.Std.Result.t
  val ok_exn : t -> ok_value
  val error_exn : t -> Unix_error.t
  val reinterpret_error_exn : t -> 'a t
  val ok_or_unix_error_exn : t -> syscall_name:string -> ok_value
  val ok_or_unix_error_with_args_exn :
    t ->
    syscall_name:string -> '-> ('-> Core_kernel.Std.Sexp.t) -> ok_value
  val sexp_of_t : t -> Sexplib.Sexp.t
  val compare : t -> t -> int
end