let env' = Env.remove_names env (List.map fst magic_map) in
Some (env', pid)))
(fun _ -> None)
- candidates
+ (List.rev candidates)
in
let match_cb rows =
let candidates =
| _ -> assert false)
| Pt.If (guard, p) ->
- prerr_endline ("guard = " ^ CicNotationPp.pp_term guard) ;
- prerr_endline ("p = " ^ CicNotationPp.pp_term p) ;
let compiled_guard = compiler [guard, 0]
and compiled_p = compiler [p, 0] in
(fun term env ->
- prerr_endline "GUARDIA?" ;
match compiled_guard term with
| None -> None
| Some _ ->
match compiled_p term with
| None -> None
| Some (env', _) ->
- prerr_endline "guardia ok" ;
Some (env' @ env)
end)
+ | Pt.Unless (guard, p) ->
+ let compiled_guard = compiler [guard, 0]
+ and compiled_p = compiler [p, 0] in
+ (fun term env ->
+ match compiled_guard term with
+ | None ->
+ begin
+ match compiled_p term with
+ | None -> None
+ | Some (env', _) ->
+ Some (env' @ env)
+ end
+ | Some _ -> None)
+
| _ -> assert false
end