Lwtreslib.TracedTraced is a functor to generate advanced combined-monad replacements for parts of the Stdlib. The generated module is similar to Bare with the addition of traces: structured collections of errors.
For convenience, the monad includes primitives to error directly with a trace rather than a bare error.
All the _ep traversors return traces of errors rather than lists of errors. The _ep traversors preserve their best-effort semantic.
Additional functions in the Monad allow the construction of sequential traces: functions to enrich traces with new errors. E.g.,
let load_config file =
   Result.map_error
     (fun trace ->
        Trace.cons "cannot load configuration file" trace)
   @@ begin
     let open Lwt_result_syntax in
     let* file = open_file in
     let* lines = read_lines file in
     let* json = parse_config lines in
     make_dictionary json
   endExample implementations of traces are provided in the traces/ directory.
module Monad : TRACED_MONAD with type 'error trace = 'error Trace.tracemodule Hashtbl : 
  Traced_sigs.Hashtbl.S with type 'error trace := 'error Trace.tracemodule List : Traced_sigs.List.S with type 'error trace := 'error Trace.tracemodule Map : Traced_sigs.Map.S with type 'error trace := 'error Trace.tracemodule Option : Traced_sigs.Option.Smodule Result : Traced_sigs.Result.Smodule Seq : Traced_sigs.Seq.S with type 'error trace := 'error Trace.tracemodule Seq_e : Traced_sigs.Seq_e.Smodule Seq_s : Traced_sigs.Seq_s.S with type 'error trace := 'error Trace.tracemodule Set : Traced_sigs.Set.S with type 'error trace := 'error Trace.tracemodule Unit : Traced_sigs.Unit.S