diff options
author | 2011-07-29 14:28:28 +0000 | |
---|---|---|
committer | 2011-07-29 14:28:28 +0000 | |
commit | c9624662706ea91a139241ce9953860f754302eb (patch) | |
tree | 0c73de4b29ca048d1de1ea25cef529fc1543dd2d /lib | |
parent | c7038a54f86d10a1205cad4733496e1b7de235b7 (diff) |
Refl_omega: replaced some generic = on constr by eq_constr
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14355 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util.ml | 9 | ||||
-rw-r--r-- | lib/util.mli | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml index 94b1d37c2..e9f87acb5 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -507,6 +507,15 @@ let rec list_smartfilter f l = match l with else h :: tl' else tl' +let list_index_f f x = + let rec index_x n = function + | y::l -> if f x y then n else index_x (succ n) l + | [] -> raise Not_found + in + index_x 1 + +let list_index0_f f x l = list_index_f f x l - 1 + let list_index x = let rec index_x n = function | y::l -> if x = y then n else index_x (succ n) l diff --git a/lib/util.mli b/lib/util.mli index 8a26c9890..7b8f9d31d 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -154,12 +154,14 @@ val list_smartfilter : ('a -> bool) -> 'a list -> 'a list (** [list_index] returns the 1st index of an element in a list (counting from 1) *) val list_index : 'a -> 'a list -> int +val list_index_f : ('a -> 'a -> bool) -> 'a -> 'a list -> int (** [list_unique_index x l] returns [Not_found] if [x] doesn't occur exactly once *) val list_unique_index : 'a -> 'a list -> int (** [list_index0] behaves as [list_index] except that it starts counting at 0 *) val list_index0 : 'a -> 'a list -> int +val list_index0_f : ('a -> 'a -> bool) -> 'a -> 'a list -> int val list_iter3 : ('a -> 'b -> 'c -> unit) -> 'a list -> 'b list -> 'c list -> unit val list_iter_i : (int -> 'a -> unit) -> 'a list -> unit val list_fold_right_i : (int -> 'a -> 'b -> 'b) -> int -> 'a list -> 'b -> 'b |