From 98bb766de6d4bcdf14e6ad247b791bc42e65ceeb Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 27 Feb 2018 21:37:28 -0600 Subject: [PATCH] fix ccint --- src/core/CCInt.ml | 81 +++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/src/core/CCInt.ml b/src/core/CCInt.ml index 909833e4..f260c719 100644 --- a/src/core/CCInt.ml +++ b/src/core/CCInt.ml @@ -1,13 +1,6 @@ (* This file is free software, part of containers. See file "license" for more details. *) -module Infix = struct - include Pervasives - let (--) = range - let (--^) = range' -end -include Infix - type t = int let equal (a:int) b = Pervasives.(=) a b @@ -16,6 +9,46 @@ let compare a b = compare a b let hash i = i land max_int +let range i j yield = + let rec up i j yield = + if i=j then yield i + else ( + yield i; + up (i+1) j yield + ) + and down i j yield = + if i=j then yield i + else ( + yield i; + down (i-1) j yield + ) + in + if i<=j then up i j yield else down i j yield + +(*$= & ~printer:Q.Print.(list int) + [0;1;2;3;4;5] (range 0 5 |> Sequence.to_list) + [0] (range 0 0 |> Sequence.to_list) + [5;4;3;2] (range 5 2 |> Sequence.to_list) +*) + +let range' i j yield = + if i Sequence.to_list) + [0;1;2;3;4] (range' 0 5 |> Sequence.to_list) + [5;4;3] (range' 5 2 |> Sequence.to_list) +*) + +module Infix = struct + include Pervasives + let (--) = range + let (--^) = range' +end +include Infix + let sign i = if i < 0 then -1 else if i>0 then 1 @@ -218,37 +251,3 @@ let range_by ~step i j yield = (CCInt.range_by ~step:1 i j |> Sequence.to_list) \ (CCInt.range i j |> Sequence.to_list) ) *) - -let range i j yield = - let rec up i j yield = - if i=j then yield i - else ( - yield i; - up (i+1) j yield - ) - and down i j yield = - if i=j then yield i - else ( - yield i; - down (i-1) j yield - ) - in - if i<=j then up i j yield else down i j yield - -(*$= & ~printer:Q.Print.(list int) - [0;1;2;3;4;5] (range 0 5 |> Sequence.to_list) - [0] (range 0 0 |> Sequence.to_list) - [5;4;3;2] (range 5 2 |> Sequence.to_list) -*) - -let range' i j yield = - if i Sequence.to_list) - [0;1;2;3;4] (range' 0 5 |> Sequence.to_list) - [5;4;3] (range' 5 2 |> Sequence.to_list) -*) -