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