Previous Up Next

7.4  Term processing

7.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 7.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.

7.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.

7.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 7.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 7.22.1)    representation_error(max_arity)

Portability

ISO predicate.

7.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.

7.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.


Copyright (C) 1999-2007 Daniel Diaz

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

More about the copyright
Previous Up Next