diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/Utilities.ml | 5 | ||||
| -rw-r--r-- | lib/Utilities.mli | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/Utilities.ml b/lib/Utilities.ml index a96d16f..52483b3 100644 --- a/lib/Utilities.ml +++ b/lib/Utilities.ml @@ -17,6 +17,11 @@ module Result = struct (Ok []) end +module Option = struct + let ( let* ) = Option.bind + let fmap f m = Option.bind m f +end + module Atomic = struct let rec swap atom f = let v = Atomic.get atom in diff --git a/lib/Utilities.mli b/lib/Utilities.mli index f9c0c29..9661796 100644 --- a/lib/Utilities.mli +++ b/lib/Utilities.mli @@ -10,6 +10,11 @@ module Result : sig val sequence : ('a, 'b) result list -> ('a list, 'b) result end +module Option : sig + val ( let* ) : 'a option -> ('a -> 'b option) -> 'b option + val fmap : ('a -> 'b option) -> 'a option -> 'b option +end + module Atomic : sig val swap : 'a Atomic.t -> ('a -> 'a) -> 'a Atomic.t (* This is silly *) |
