(* let bindings for early return when encountering an error *) (* see https://ocaml.org/releases/4.13/htmlman/bindingops.html *) let ( let* ) o f = Result.fold ~ok:f ~error:Result.error o let ( let** ) o f = match o with Error e -> Template.err e | Ok v -> f v