From adcff57e4c40f7176aec594cff66bb842f8adb59 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sun, 15 Mar 2015 22:20:01 +0100 Subject: [PATCH] add `--` to CCFQueue --- src/data/CCFQueue.ml | 9 +++++++++ src/data/CCFQueue.mli | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/src/data/CCFQueue.ml b/src/data/CCFQueue.ml index 638a1617..96c62b92 100644 --- a/src/data/CCFQueue.ml +++ b/src/data/CCFQueue.ml @@ -358,3 +358,12 @@ let rec _equal_klist eq l1 l2 = match l1(), l2() with eq x1 x2 && _equal_klist eq l1' l2' let equal eq q1 q2 = _equal_klist eq (to_klist q1) (to_klist q2) + +let (--) a b = + let rec up_to q a b = if a = b + then snoc q a + else up_to (snoc q a) (a+1) b + and down_to q a b = if a = b then snoc q a + else down_to (snoc q a) (a-1) b + in + if a <= b then up_to empty a b else down_to empty a b diff --git a/src/data/CCFQueue.mli b/src/data/CCFQueue.mli index 397155c1..3c5d4ab4 100644 --- a/src/data/CCFQueue.mli +++ b/src/data/CCFQueue.mli @@ -114,6 +114,7 @@ val map : ('a -> 'b) -> 'a t -> 'b t (** Map values *) val (>|=) : 'a t -> ('a -> 'b) -> 'b t +(** Synonym to {!map} *) val size : 'a t -> int (** Number of elements in the queue (constant time) *) @@ -138,3 +139,7 @@ val of_seq : 'a sequence -> 'a t val to_klist : 'a t -> 'a klist val of_klist : 'a klist -> 'a t +val (--) : int -> int -> int t +(** [a -- b] is the integer range from [a] to [b], both included. + @since NEXT_RELEASE *) +