diff options
| -rw-r--r-- | lib/Utilities.ml | 4 | ||||
| -rw-r--r-- | lib/Utilities.mli | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/Utilities.ml b/lib/Utilities.ml index dcf4417..6f27b30 100644 --- a/lib/Utilities.ml +++ b/lib/Utilities.ml @@ -55,7 +55,7 @@ module List = struct include Generic (ListSequence) - let concat_map f xs = List.map f xs |> sequence |> Stdlib.Result.map List.concat + let concat_mapm f xs = List.map f xs |> sequence |> Stdlib.Result.map List.concat let hd_opt = function x :: _ -> Some x | [] -> None end @@ -93,6 +93,8 @@ module FingerTree = struct match f elem with None -> acc | Some result -> BatFingerTree.snoc acc result) BatFingerTree.empty + let concat_mapm f xs = BatFingerTree.map f xs |> sequence |> Stdlib.Result.map BatFingerTree.append + let concat_map f = BatFingerTree.fold_left (fun acc elem -> BatFingerTree.append acc @@ f elem) BatFingerTree.empty diff --git a/lib/Utilities.mli b/lib/Utilities.mli index 7d41e20..3f0787f 100644 --- a/lib/Utilities.mli +++ b/lib/Utilities.mli @@ -12,7 +12,7 @@ end module List : sig val sequence : ('a, 'b) result list -> ('a list, 'b) result val foldm_left : ('a -> 'b -> ('a, 'e) result) -> 'a -> 'b list -> ('a, 'e) result - val concat_map : ('a -> ('b list, 'e) result) -> 'a list -> ('b list, 'e) result + val concat_mapm : ('a -> ('b list, 'e) result) -> 'a list -> ('b list, 'e) result val hd_opt : 'a list -> 'a option end @@ -36,7 +36,7 @@ module FingerTree : sig val foldm_left : ('a -> 'b -> ('a, 'e) result) -> 'a -> 'b BatFingerTree.t -> ('a, 'e) result val join : string BatFingerTree.t -> string -> string val filter_map : ('a -> 'b option) -> 'a BatFingerTree.t -> 'b BatFingerTree.t - val concat_map : ('a -> ('b BatFingerTree.t, 'e) result) -> 'a BatFingerTree.t -> ('b BatFingerTree.t, 'e) result + val concat_mapm : ('a -> ('b BatFingerTree.t, 'e) result) -> 'a BatFingerTree.t -> ('b BatFingerTree.t, 'e) result end module Fun : sig |
