PLOGHELP UNIV Robert Duncan, March 1988
:- op(40, xfx, '=..').
?- T =.. L .
The infix operator '=..' (pronounced "univ") can be used either to
decompose a term into a list containing its functor and arguments or
else to construct a term from such a list.
In a goal of the form
?- T =.. L .
if T is a term, then L is unified with a list consisting of the functor
of T and its arguments. So for example:
?- p(0, a) =.. L .
L = [p, 0, a] ?
yes
If T is atomic, then it counts as its own functor and L is unified with
a singleton list:
?- 3 =.. L .
L = [3] ?
yes
If T is a variable, then L must be instantiated to a proper list (i.e
one terminated by nil) whose head is atomic; in this case T is unified
with a term constructed from the elements of L, the first element of L
being the functor and the remaining elements its arguments. Thus:
?- T =.. [p, 0, a].
T = p(0, a) ?
yes
?- T =.. [3].
T = 3 ?
yes
It is an error for both T and L to be uninstantiated, or for T to be
uninstantiated and L not to be a proper list. Also, if the head of L is
not an atom, then its tail must be nil in order to construct a term,
since objects other than atoms cannot be used as functors of arity
greater than zero.
A "univ" goal cannot be re-satisfied.
An alternative approach to constructing and destructing terms is to use
functor/3 and arg/3 (see PLOGHELP * FUNCTOR, * ARG). These can be
written in terms of "univ" and vice-versa.
-- RELATED DOCUMENTATION ----------------------------------------------
PLOGHELP * ARG
Determines the nth argument of a term
PLOGHELP * DOLLAR
Library package which allows variables to stand for predicate names
PLOGHELP * FUNCTOR
Determines the functor and arity of a term
PLOGHELP * OP
Discussion of operators and how to declare them
PLOGHELP * OPERATORS
Summary of the standard operator declarations
PLOGHELP * SYMBOLS
Summary and index of HELP files for symbolic atoms used in Prolog
--- C.all/plog/help/univ -----------------------------------------------
--- Copyright University of Sussex 1988. All rights reserved. ----------