Previous Contents Next
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.


Copyright (C) 1999,2000 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 Contents Next