- let rec for_aux (d, r) = match r with
- | [] -> d, []
- | h :: t ->
- let d = {d with avars = P.add_assoc (i, h) d.avars} in
- let d, r = eval_query d x2 in
- let d, s = for_aux (d, t) in
- d, f r s
- in
- for_aux (eval_query c x1)
- | M.While k x1 x2 ->
+ let for_aux (d, r) s gl _ =
+ let d = {d with avars = P.add_assoc (i, (s, gl)) d.avars} in
+ let d, s = eval_query d x2 in
+ d, f r s
+ in
+ let d, r = eval_query c x1 in
+ I.x_iter for_aux (d, I.empty) r
+ | M.While (k, x1, x2) ->