- aux 0 i es
-
-let rec name f = function
- | [] -> f None
- | Name (r, n) :: _ -> f (Some (r, n))
- | _ :: tl -> name f tl
+ aux i es
+
+let rec rev_iter f map = function
+ | Null -> f ()
+ | Cons (tl, None, b) ->
+ let f _ = map f tl b in rev_iter f map tl
+ | Cons (tl, Some c, b) ->
+ let f _ = map f c b in rev_iter f map tl
+
+let rec fold_left f map x = function
+ | Null -> f x
+ | Cons (tl, _, b) ->
+ let f x = fold_left f map x tl in
+ map f x b
+
+let rec name err f = function
+ | [] -> err ()
+ | Name (r, n) :: _ -> f n r
+ | _ :: tl -> name err f tl
+
+let rec apix err f = function
+ | [] -> err ()
+ | Apix i :: _ -> f i
+ | _ :: tl -> apix err f tl