let rec select_ex rset =
match rset with
[] -> []
- | r::tl -> upd_rvars c ((rvar,r)::c.rvars);
- if (exec_boole_exp c bexp) then r::(select_ex tl)
+ | r::tl -> let c1 = upd_rvars c ((rvar,r)::c.rvars) in
+ if (exec_boole_exp c1 bexp) then r::(select_ex tl)
else select_ex tl
in select_ex rset
| (uri,attl)::tail1 -> let rec sub_prod attl =
match attl with
(*per ogni el. di attl *) [] -> ()
-(*devo andare in ric. su tail1*) | att::tail2 -> upd_groups c ((uri,att)::c.groups);
- prod c tail1; sub_prod tail2
+(*devo andare in ric. su tail1*) | att::tail2 -> let c1 = upd_groups c ((uri,att)::c.groups) in
+ prod c1 tail1; sub_prod tail2
in
sub_prod attl
in
| MathQL.Const x -> let ol = List.sort compare x in
let rec edup = function
[] -> []
- | s::tl -> if s = (List.tl tl) then edup tl
+ | s::tl -> if s = (List.hd tl) then edup tl
else s::(edup tl)
in
edup ol