If Prolog encounters a foreign predicate at run time it will call a
function specified in the predicate definition of the foreign predicate.
The arguments
pass the Prolog arguments to the goal
as Prolog terms. Foreign functions should be declared of type
foreign_t. Deterministic foreign functions have two alternatives
to return control back to Prolog: