]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/list2.ml
Initial revision
[helm.git] / helm / DEVEL / lablgtk / lablgtk_20000829-0.1.0 / applications / browser / list2.ml
diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/list2.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/list2.ml
new file mode 100644 (file)
index 0000000..0d7798a
--- /dev/null
@@ -0,0 +1,25 @@
+(* $Id$ *)
+
+let rec cut l ~len =
+  if len <= 0 then [], l else
+  match l with
+    a::l ->
+      let l1, l2 = cut l ~len:(len-1) in
+      a::l1, l2
+  | [] ->
+      invalid_arg "cut_list"
+
+let rec chop l ~len =
+  if l = [] then [] else
+  let l1, l2 =
+    try cut_list l ~len
+    with Invalid_argument _ -> l, []
+  in
+  l1 :: chop l2 ~len
+
+
+let rec iteri_aux ~f:f ~i = function
+    [] -> ()
+  | a::l -> f ~i a; iteri_aux ~f:f ~i:(i+1) l
+
+let iteri = iteri_aux ~i:0