aboutsummaryrefslogtreecommitdiff
path: root/src/arrayUtils.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/arrayUtils.ml')
-rw-r--r--src/arrayUtils.ml8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/arrayUtils.ml b/src/arrayUtils.ml
new file mode 100644
index 0000000..75319d8
--- /dev/null
+++ b/src/arrayUtils.ml
@@ -0,0 +1,8 @@
+let flatMap (f : 'a -> 'b option) (xs : 'a Js.Array.t) : 'b Js.Array.t =
+ xs |> Js.Array.map f
+ |> Js.Array.filter (fun maybe ->
+ match maybe with Some _ -> true | None -> false)
+ |> Js.Array.map (fun maybe ->
+ match maybe with
+ | Some x -> x
+ | None -> Js.Exn.raiseError "Unexpected None")