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;
}