11.3.43 copy_term/[2,3] [ISO]

Synopsis

copy_term(+Term, -Copy)

Makes a copy of Term in which all variables have been replaced by new variables that occur nowhere outside the newly created term.

copy_term(+Term, -Copy, -Body)

Furthermore, if Term contains attributed variables, unifies Body with a term such that executing Body will reinstate equivalent attributes on the variables in Copy. Otherwise, Body is unified with true.

Arguments

Term
term
Copy
term
Body
callable

Description

Independent copies are substituted for any mutable terms in term. It behaves as if defined by:

     copy_term(X, Y) :-
             assert('copy of'(X)),
             retract('copy of'(Y)).

The implementation of copy_term/2 conserves space by not copying ground subterms.

When you call clause/[2,3] or instance/2, you get a new copy of the term stored in the database, in precisely the same sense that copy_term/2 gives you a new copy.

Examples

Comments

copy_term/2 is part of the ISO Prolog standard; copy_term/3 is not.

See Also

ref-lte-cpt.


Send feedback on this subject.