Move copy_term/3 to library(iso_ext)
This commit is contained in:
@@ -17,7 +17,8 @@ but they're not part of the ISO Prolog standard at the moment.
|
|||||||
succ/2,
|
succ/2,
|
||||||
call_nth/2,
|
call_nth/2,
|
||||||
countall/2,
|
countall/2,
|
||||||
copy_term_nat/2]).
|
copy_term_nat/2,
|
||||||
|
copy_term/3]).
|
||||||
|
|
||||||
:- use_module(library(error), [can_be/2,
|
:- use_module(library(error), [can_be/2,
|
||||||
domain_error/3,
|
domain_error/3,
|
||||||
@@ -26,6 +27,8 @@ but they're not part of the ISO Prolog standard at the moment.
|
|||||||
|
|
||||||
:- use_module(library(lists), [maplist/3]).
|
:- use_module(library(lists), [maplist/3]).
|
||||||
|
|
||||||
|
:- use_module(library('$project_atts')).
|
||||||
|
|
||||||
:- meta_predicate(forall(0, 0)).
|
:- meta_predicate(forall(0, 0)).
|
||||||
|
|
||||||
%% forall(Generate, Test).
|
%% forall(Generate, Test).
|
||||||
@@ -382,3 +385,15 @@ countall(Goal, N) :-
|
|||||||
copy_term_nat(Source, Dest) :-
|
copy_term_nat(Source, Dest) :-
|
||||||
'$copy_term_without_attr_vars'(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
|
||||||
|
).
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
:- module('$project_atts', [copy_term/3]).
|
:- module('$project_atts', []).
|
||||||
|
|
||||||
:- use_module(library(dcgs)).
|
:- use_module(library(dcgs)).
|
||||||
:- use_module(library(error), [can_be/2]).
|
:- use_module(library(error), [can_be/2]).
|
||||||
@@ -100,14 +100,6 @@ gather_residual_goals([V|Vs]) -->
|
|||||||
|
|
||||||
delete_all_attributes_from_var(V) :- '$delete_all_attributes_from_var'(V).
|
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_residual_goals(Term,Rs) :-
|
||||||
'$term_attributed_variables'(Term, Vs),
|
'$term_attributed_variables'(Term, Vs),
|
||||||
phrase(gather_residual_goals(Vs), Rs),
|
phrase(gather_residual_goals(Vs), Rs),
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
:- module('$toplevel', [copy_term/3]).
|
:- module('$toplevel', []).
|
||||||
|
|
||||||
:- use_module(library(atts), [call_residue_vars/2]).
|
:- use_module(library(atts), [call_residue_vars/2]).
|
||||||
:- use_module(library(charsio)).
|
:- use_module(library(charsio)).
|
||||||
|
|||||||
Reference in New Issue
Block a user