- copy_term(+Term, -Copy, -Gs)
- Create a regular term Copy as a copy of Term
(without any attributes), and a list Gs of goals that
represents the attributes. The goal
maplist(call, Gs)recreates the attributes for Copy. The nonterminal attribute_goals//1, as defined in the modules the attributes stem from, is used to convert attributes to lists of goals.
This building block is used by the top level to report pending attributes in a portable and understandable fashion. This predicate is the preferred way to reason about and communicate terms with constraints.
copy_term(Term, Term, Gs)can be used to reason about the constraints in which
- copy_term_nat(+Term, -Copy)
- As copy_term/2. Attributes, however, are not copied but replaced by fresh variables.
- term_attvars(+Term, -AttVars)
- AttVars is a list of all attributed variables in Term
and its attributes. That is, term_attvars/2
works recursively through attributes. This predicate is cycle-safe. The
term_attvars(Term,)in an efficient test that Term has no attributes; scanning the term is aborted after the first attributed variable is found.