in
visit_ast ~special_k strip_attributes t
+let rec get_idrefs =
+ function
+ | Ast.AttributedTerm (`IdRef id, t) -> id :: get_idrefs t
+ | Ast.AttributedTerm (_, t) -> get_idrefs t
+ | _ -> []
+
let meta_names_of_term term =
let rec names = ref [] in
let add_name n =
let find_appl_pattern_uris ap =
let rec aux acc =
function
- | Ast.UriPattern uri ->
- (try
- ignore (List.find (fun uri' -> UriManager.eq uri uri') acc);
- acc
- with Not_found -> uri :: acc)
+ | Ast.UriPattern uri -> uri :: acc
| Ast.ImplicitPattern
| Ast.VarPattern _ -> acc
| Ast.ApplPattern apl -> List.fold_left aux acc apl
in
- aux [] ap
+ let uris = aux [] ap in
+ HExtlib.list_uniq (List.fast_sort UriManager.compare uris)
let rec find_branch =
function