From 87b510e5b0f363724eae5db9f177f167a3586015 Mon Sep 17 00:00:00 2001 From: Pierre-Marie Pédrot Date: Sat, 1 Mar 2014 18:26:26 +0100 Subject: Fixing pervasive comparisons --- lib/option.ml | 6 ++++++ lib/option.mli | 3 +++ 2 files changed, 9 insertions(+) (limited to 'lib') diff --git a/lib/option.ml b/lib/option.ml index 02adc69478..1ef45d232e 100644 --- a/lib/option.ml +++ b/lib/option.ml @@ -29,6 +29,12 @@ let equal f x y = match x, y with | Some x, Some y -> f x y | _, _ -> false +let compare f x y = match x, y with +| None, None -> 0 +| Some x, Some y -> f x y +| None, Some _ -> -1 +| Some _, None -> 1 + 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 0b50c588b1..d390edb63a 100644 --- a/lib/option.mli +++ b/lib/option.mli @@ -28,6 +28,9 @@ val is_empty : 'a option -> bool [f] is called. Otherwise it returns [false]. *) 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 + (** [get x] returns [y] where [x] is [Some y]. It raises IsNone if [x] equals [None]. *) val get : 'a option -> 'a -- cgit v1.2.3