- An atom in Prolog's internal representation. Atoms are pointers to an
opaque structure. They are a unique representation for represented text,
which implies that atom A represents the same text as atom B
if and only if A and B are the same pointer.
Atoms are the central representation for textual constants in Prolog. The transformation of a character string C to an atom implies a hash-table lookup. If the same atom is needed often, it is advised to store its reference in a global variable to avoid repeated lookup.
- A functor is the internal representation of a name/arity pair. They are used to find the name and arity of a compound term as well as to construct new compound terms. Like atoms they live for the whole Prolog session and are unique.
- Handle to a Prolog predicate. Predicate handles live forever (although they can lose their definition).
- Query identifier. Used by PL_open_query(), PL_next_solution() and PL_close_query() to handle backtracking from C.
- Frame identifier. Used by PL_open_foreign_frame() and PL_close_foreign_frame().
- A module is a unique handle to a Prolog module. Modules are used only to call predicates in a specific module.
- Return type for a C function implementing a Prolog predicate.
- Passed as additional argument to non-deterministic foreign functions. See PL_retry*() and PL_foreign_context*().
- Type for the install() and uninstall() functions of shared or dynamic link libraries. See section 9.2.3.
- Actually part of the C99 standard rather than Prolog. As of version
5.5.6, Prolog integers are 64-bit on all hardware. The C99 type
int64_tis defined in the
stdint.hstandard header and provides platform-independent 64-bit integers. Portable code accessing Prolog should use this type to exchange integer values. Please note that PL_get_long() can return
FALSEon Prolog integers that cannot be represented as a C long. Robust code should not assume any of the integer fetching functions to succeed, even if the Prolog term is known to be an integer.