File tree Expand file tree Collapse file tree 2 files changed +22
-0
lines changed
Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -87,6 +87,19 @@ let tbind ?(msg="") (f: 'a -> 'c traceresult) (r: 'a traceresult) =
8787 | Error e -> Error (msg :: e)
8888
8989
90+ let tbind2
91+ ?(msg1 =" " )
92+ ?(msg2 =" " )
93+ (f : 'a -> 'b -> 'c traceresult )
94+ (r1 : 'a traceresult )
95+ (r2 : 'b traceresult ): 'c traceresult =
96+ match r1, r2 with
97+ | Ok v1 , Ok v2 -> f v1 v2
98+ | Error e1 , Ok _ -> Error (msg1 :: e1)
99+ | Ok _ , Error e2 -> Error (msg2 :: e2)
100+ | Error e1 , Error e2 -> Error (msg1 :: msg2 :: (e1 @ e2))
101+
102+
90103let tfold ~(ok :'a -> 'c ) ~(error :string list -> 'c ) (r : 'a traceresult ): 'c =
91104 match r with
92105 | Ok v -> ok v
Original file line number Diff line number Diff line change @@ -100,6 +100,15 @@ val tbind:
100100 ?msg : string -> ('a -> 'c traceresult ) -> ('a traceresult ) -> 'c traceresult
101101
102102
103+ val tbind2 :
104+ ?msg1 : string
105+ -> ?msg2 : string
106+ -> ('a -> 'b -> 'c traceresult )
107+ -> 'a traceresult
108+ -> 'b traceresult
109+ -> 'c traceresult
110+
111+
103112(* * [titer ~ok ~error r] is [ok v] if [r] is [Ok v] and [error e] if [r] is
104113 [Error e].*)
105114val titer : ok :('a -> unit ) -> error :(string list -> unit ) -> ('a traceresult ) -> unit
You can’t perform that action at this time.
0 commit comments