CCResultSourceUses the new "result" type from OCaml 4.03.
Fast internal iterator.
of_exn_trace e is similar to of_exn e, but it adds the stacktrace to the error message.
Remember to call Printexc.record_backtrace true and compile with the debug flag for this to work.
fail_printf format uses format to obtain an error message and then returns Error msg.
fail_fprintf format uses format to obtain an error message and then returns Error msg.
add_ctx msg leaves Ok x untouched, but transforms Error s into Error s' where s' contains the additional context given by msg.
Like map, but also with a function that can transform the error message in case of failure.
Extract the value x from Ok x, fails otherwise. You should be careful with this function, and favor other combinators whenever possible.
get_or e ~default returns x if e = Ok x, default otherwise.
get_or_failwith e returns x if e = Ok x, fails otherwise.
map_or f e ~default returns f x if e = Ok x, default otherwise.
catch e ~ok ~err calls either ok or err depending on the value of e.
Monadic composition. e >>= f proceeds as f x if e is Ok x or returns e if e is an Error.
fold ~ok ~error e opens e and, if e = Ok x, returns ok x, otherwise e = Error s and it returns error s.
fold_ok f acc r will compute f acc x if r=Ok x, and return acc otherwise, as if the result were a mere option.
guard f runs f () and returns its result wrapped in Ok. If f () raises some exception e, then it fails with Error e.
Like guard_str but uses of_exn_trace instead of of_exn so that the stack trace is printed.
Like guard but gives the function two arguments.
Like guard but gives the function three arguments.
a <*> b evaluates a and b, and, in case of success, returns Ok (a b). Otherwise, it fails, and the error of a is chosen over the error of b if both fail.
join t, in case of success, returns Ok o from Ok (Ok o). Otherwise, it fails with Error e where e is the unwrapped error of t.
both a b, in case of success, returns Ok (o, o') with the ok values of a and b. Otherwise, it fails, and the error of a is chosen over the error of b if both fail.
Let operators on OCaml >= 4.08.0, nothing otherwise
include CCShimsMkLet_.S2 with type ('a, 'e) t_let2 := ('a, 'e) resultSame as map_l id: returns Ok [x1;…;xn] if l=[Ok x1; …; Ok xn], or the first error otherwise.
map_l f [a1; ...; an] applies the function f to a1, ..., an , and, in case of success for every element, returns the list of Ok-value. Otherwise, it fails and returns the first error encountered. Tail-recursive.
choose l selects a member of l that is a Ok _ value, or returns Error l otherwise, where l is the list of errors.
retry n f calls f at most n times, returning the first result of f () that doesn't fail. If f fails n times, retry n f fails with the list of successive errors.