diff options
Diffstat (limited to 'lib/prelude.ml')
-rw-r--r-- | lib/prelude.ml | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/prelude.ml b/lib/prelude.ml new file mode 100644 index 0000000..57f7af3 --- /dev/null +++ b/lib/prelude.ml | |||
@@ -0,0 +1,31 @@ | |||
1 | include Core | ||
2 | module Time_ns = Time_ns_unix | ||
3 | |||
4 | module List = struct | ||
5 | include List | ||
6 | |||
7 | let map_result ~(f : 'a -> ('b, 'c) result) : 'a list -> ('b list, 'c) result | ||
8 | = | ||
9 | let open Result.Let_syntax in | ||
10 | let rec go = function | ||
11 | | [] -> return [] | ||
12 | | x :: xs -> | ||
13 | let%map x' = f x and xs' = go xs in | ||
14 | x' :: xs' | ||
15 | in | ||
16 | go | ||
17 | end | ||
18 | |||
19 | module Z = struct | ||
20 | include Z | ||
21 | |||
22 | let sexp_of_t x = Sexp.Atom (Z.to_string x) | ||
23 | end | ||
24 | |||
25 | module Result = struct | ||
26 | include Result | ||
27 | |||
28 | let unwrap = function | ||
29 | | Error _ -> failwith "Result.unwrap: unexpected (Error _)" | ||
30 | | Ok v -> v | ||
31 | end | ||