Previous Next Contents

6.4  Term processing

6.4.1  functor/3

Templates

functor(+nonvar, ?atomic, ?integer)
functor(-nonvar, +atomic, +integer)
Description

functor(Term, Name, Arity) succeeds if the principal functor of Term is Name and its arity is Arity. This predicate can be used in two ways:

Errors


Term and Name are both variables    instantiation_error

Term and Arity are both variables    instantiation_error

Term is a variable and Name is neither a variable nor an atomic term    type_error(atomic, Name)

Term is a variable and Arity is neither a variable nor an integer    type_error(integer, Arity)

Term is a variable, Name is a constant but not an atom and Arity is an integer > 0    type_error(atom, Name)

Term is a variable and Arity is an integer > max_arity flag (section 6.22.1)    representation_error(max_arity)

Term is a variable and Arity is an integer < 0    domain_error(not_less_than_zero, Arity)


Portability

ISO predicate.

6.4.2  arg/3

Templates

arg(+integer, +compound_term, ?term)
Description

arg(N, Term, Arg) succeeds if the Nth argument of Term is Arg.

Errors


N is a variable    instantiation_error

Term is a variable    instantiation_error

N is neither a variable nor an integer    type_error(integer, N)

Term is neither a variable nor a compound term    type_error(compound, Term)

N is an integer < 0    domain_error(not_less_than_zero, N)


Portability

ISO predicate.

6.4.3  (=..)/2 - univ

Templates

=..(+nonvar, ?list)
=..(-nonvar, +list)
Description

Term =.. List succeeds if List is a list whose head is the atom corresponding to the principal functor of Term and whose tail is a list of the arguments of Term.

=.. is a predefined infix operator (section 6.14.10).

Errors


Term is a variable and List is a partial list    instantiation_error

List is neither a partial list nor a list    type_error(list, List)

Term is a variable and List is a list whose head is a variable    instantiation_error

List is a list whose head H is neither an atom nor a variable and whose tail is not the empty list    type_error(atom, H)

List is a list whose head H is a compound term and whose tail is the empty list    type_error(atomic, H)

Term is a variable and List is the empty list    domain_error(non_empty_list, [])

Term is a variable and the tail of List has a length > max_arity flag (section 6.22.1)    representation_error(max_arity)


Portability

ISO predicate.

6.4.4  copy_term/2

Templates

copy_term(?term, ?term)
Description

copy_term(Term1, Term2) succeeds if Term2 unifies with a term T which is a renamed copy of Term1.

Errors

None.

Portability

ISO predicate.

6.4.5  setarg/4, setarg/3

Templates

setarg(+integer, +compound_term, +term, +boolean)
setarg(+integer, +compound_term, +term)
Description

setarg(N, Term, NewValue, Undo) replaces destructively the Nth argument of Term with NewValue. This assignment is undone on backtracking if Undo = true. This should only used if there is no further use of the old value of the replaced argument. If Undo = false then NewValue must be either an atom or an integer.

setarg(N, Term, NewValue) is equivalent to setarg(N, Term, NewValue, true).

Errors


N is a variable    instantiation_error

N is neither a variable nor an integer    type_error(integer, N)

N is an integer < 0    domain_error(not_less_than_zero, N)

Term is a variable    instantiation_error

Term is neither a variable nor a compound term    type_error(compound, Term)

NewValue is neither an atom nor an integer and Undo = false    type_error(atomic, NewValue)

Undo is a variable    instantiation_error

Undo is neither a variable nor a boolean    type_error(boolean, Undo)


Portability

GNU Prolog predicate.




Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

More about the copyright
Previous Next Contents