| Did you know ... | Search Documentation: |
| The class PlTerm_tail |
The class PlTerm_tail27This
was named PlTail in version 1 of the API. is
both for analysing and constructing lists. It is called PlTerm_tail
as enumeration-steps make the term-reference follow the “tail” of
the list.
PlTerm_tail is created by making a new term-reference
pointing to the same object. As PlTerm_tail is used to
enumerate or build a Prolog list, the initial list
term-reference keeps pointing to the head of the list.PlTerm_tail
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 PlTerm_tail
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);
PlTerm_tail l(av[0]);
for(int i=0; i<argc; i++)
PlCheckFail(l.append(PlTerm_string(argv[i])));
PlCheckFail(l.close());
PlQuery q("writeln", av);
try
{ return q.next_solution() ? 0 : 1;
} catch ( PlException &ex )
{ std::cerr << ex.what() << std::endl;
return 1;
}
}
[] and returns the
result of the unification.PlTerm_tail
and advance
PlTerm_tail. Returns true on success and false
if
PlTerm_tail represents the empty list. If PlTerm_tail
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)
{ PlTerm_tail tail(A1);
PlTerm_var e;
while(tail.next(e))
cout << e.as_string() << endl;
return tail.close();
}