(* iterators ****************************************************************)
let grp_iter f al =
- List.fold_left (fun s a -> I.grp_union s (f a)) I.grp_empty al
+ List.fold_left (fun s a -> I.grp_union s (f a)) I.grp_empty (List.rev al)
let grp_iter2 f al bl =
- List.fold_left2 (fun s a b -> I.grp_union s (f a b)) I.grp_empty al bl
+ List.fold_left2 (fun s a b -> I.grp_union s (f a b))
+ I.grp_empty (List.rev al) (List.rev bl)
-let iter f al = List.fold_left (fun s a -> I.union s (f a)) I.empty al
-
-let append_iter f al = List.fold_left (fun s a -> I.append (f a) s) I.empty al
+let iter f al = List.fold_left (fun s a -> I.union s (f a))
+ I.empty (List.rev al)
(* other ********************************************************************)
let grp_make_x p vl = grp_iter (I.grp_make p) vl
let x_grp_make_x p rs =
- let aux g s _ = I.grp_make p s in
+ let aux g s _ = I.grp_union g (I.grp_make p s) in
I.iter aux I.grp_empty rs
-let make_x s gl = iter (I.make s) gl
+let make_x s gl =
+ if gl = [] then avs_of_string s else iter (I.make s) gl
let count v = I.iter (fun n _ _ -> succ n) 0 v