The class PlTail
is both for analysing and constructing
lists. It is called PlTail
as enumeration-steps make the
term-reference follow theātail' of the list.
PlTail
is created by making a new term-reference pointing
to the same object. As PlTail
is used to enumerate or build
a Prolog list, the initial list term-reference keeps pointing
to the head of the list.PlTail
reference point to the new variable tail. If A is a variable,
and this function is called on it using the argument "gnat"
,
a list of the form [gnat|B]
is created and the PlTail
object now points to the new variable B.
This function returns true
if the unification succeeded
and
false
otherwise. No exceptions are generated.
The example below translates the main() argument vector to Prolog and calls the prolog predicate entry/1 with it.
int main(int argc, char **argv) { PlEngine e(argv[0]); PlTermv av(1); PlTail l(av[0]); for(int i=0; i<argc; i++) PlCheckFail(l.append(argv[i])); PlCheckFail(l.close()); PlQuery q("entry", av); return q.next_solution() ? 0 : 1; }
[]
and returns the
result of the unification.PlTail
and advance
PlTail
. Returns true
on success and false
if
PlTail
represents the empty list. If PlTail
is
neither a list nor the empty list, a type_error
is thrown.
The example below prints the elements of a list.
PREDICATE(write_list, 1) { PlTail tail(A1); PlTerm e; while(tail.next(e)) cout << e.as_string() << endl; return true; }