succ/2,
call_nth/2,
countall/2,
- copy_term_nat/2]).
+ copy_term_nat/2,
+ copy_term/3]).
:- use_module(library(error), [can_be/2,
domain_error/3,
:- use_module(library(lists), [maplist/3]).
+:- use_module(library('$project_atts')).
+
:- meta_predicate(forall(0, 0)).
%% forall(Generate, Test).
copy_term_nat(Source, Dest) :-
'$copy_term_without_attr_vars'(Source, Dest).
+%% copy_term(+Term, -Copy, -Gs).
+%
+% Produce a deep copy of Term and unify it to Copy, without attributes.
+% Unify Gs with a list of goals that represent the attributes of Term.
+% Similar to `copy_term/2` but splitting the attributes.
+copy_term(Term, Copy, Gs) :-
+ can_be(list, Gs),
+ findall(Term-Rs, '$project_atts':term_residual_goals(Term,Rs), [Copy-Gs]),
+ ( var(Gs) ->
+ Gs = []
+ ; true
+ ).
-:- module('$project_atts', [copy_term/3]).
+:- module('$project_atts', []).
:- use_module(library(dcgs)).
:- use_module(library(error), [can_be/2]).
delete_all_attributes_from_var(V) :- '$delete_all_attributes_from_var'(V).
-copy_term(Term, Copy, Gs) :-
- can_be(list, Gs),
- findall(Term-Rs, term_residual_goals(Term,Rs), [Copy-Gs]),
- ( var(Gs) ->
- Gs = []
- ; true
- ).
-
term_residual_goals(Term,Rs) :-
'$term_attributed_variables'(Term, Vs),
phrase(gather_residual_goals(Vs), Rs),
-:- module('$toplevel', [copy_term/3]).
+:- module('$toplevel', []).
:- use_module(library(atts), [call_residue_vars/2]).
:- use_module(library(charsio)).