]> matita.cs.unibo.it Git - helm.git/commitdiff
list_uniq abstracted on equality
authorEnrico Tassi <enrico.tassi@inria.fr>
Tue, 15 Nov 2005 12:10:14 +0000 (12:10 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Tue, 15 Nov 2005 12:10:14 +0000 (12:10 +0000)
helm/ocaml/extlib/hExtlib.ml
helm/ocaml/extlib/hExtlib.mli

index c66236e43ae653228073e28de90bf9890b83fd23..a76a5c76e8252dcb7eb734a7ca4a55122a2971d8 100644 (file)
@@ -112,11 +112,11 @@ let is_alphanum c = is_alpha c || is_digit c
 
 (** {2 List processing} *)
 
-let rec list_uniq = function 
+let rec list_uniq ?(eq=(=)) = function 
   | [] -> []
   | h::[] -> [h]
-  | h1::h2::tl when h1 = h2 -> list_uniq (h2 :: tl) 
-  | h1::tl (* when h1 <> h2 *) -> h1 :: list_uniq tl
+  | h1::h2::tl when eq h1 h2 -> list_uniq ~eq (h2 :: tl) 
+  | h1::tl (* when h1 <> h2 *) -> h1 :: list_uniq ~eq tl
 
 let rec filter_map f =
   function
index d12c042f56d786af6a99f653ff248b1fb44c6552..40a1aca15d9daa00c435b5d1f6ec4554b4db4f57 100644 (file)
@@ -63,7 +63,8 @@ val trim_blanks: string -> string (** strip heading and trailing blanks *)
 
 (** {2 List processing} *)
 
-val list_uniq: 'a list -> 'a list (** uniq unix filter on lists *)
+val list_uniq: 
+  ?eq:('a->'a->bool) -> 'a list -> 'a list (** uniq unix filter on lists *)
 val filter_map: ('a -> 'b option) -> 'a list -> 'b list (** filter + map *)
 val list_concat: ?sep:'a list -> 'a list list -> 'a list (**String.concat-like*)