How to create a strict result monad:
  module MyError = struct
    type t = A | B | Unexpected of exn
    let panic e = Unexpected e
  end
  module MyResult = Sugar.Result.Make (MyError)
  The generated module will have the signature of Sugar.S.Strict_result
module Make : functor (UserError : Sugar.S.Params.Strict_error) -> Sugar.S.Strict_result with type error = UserError.tA parametric module that implements the blocking interface.