aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/option.ml4
-rw-r--r--lib/option.mli3
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/option.ml b/lib/option.ml
index 1ef45d232e..abdae892f2 100644
--- a/lib/option.ml
+++ b/lib/option.ml
@@ -35,6 +35,10 @@ let compare f x y = match x, y with
| None, Some _ -> -1
| Some _, None -> 1
+let hash f = function
+| None -> 0
+| Some x -> f x
+
exception IsNone
(** [get x] returns [y] where [x] is [Some y]. It raises IsNone
diff --git a/lib/option.mli b/lib/option.mli
index d390edb63a..af8696a5e4 100644
--- a/lib/option.mli
+++ b/lib/option.mli
@@ -31,6 +31,9 @@ val equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool
(** Same as [equal], but with comparison. *)
val compare : ('a -> 'a -> int) -> 'a option -> 'a option -> int
+(** Lift a hash to option types. *)
+val hash : ('a -> int) -> 'a option -> int
+
(** [get x] returns [y] where [x] is [Some y]. It raises IsNone
if [x] equals [None]. *)
val get : 'a option -> 'a