How can a foreign language predicate also be a built-in predicate?

The low level parts of SWI-Prolog are written C and are thus foreign language. Many of the built-in predicates, e.g. unification (=), are low level and implemented in C and is thus a foreign language (built-in) predicate.

See: Unification

There are many such predicates. In this directory look for the files named pl-<name>.c

The keyword when searching the C code for such predicates is PRED_IMPL

2 Likes