Extends the support for terms in the SWI-Prolog standard library.
- ascii_id(-Id:atom) is det
- ascii_id(+Term:term, -Id:atom) is det
- Generates an Id for the given Prolog term. The Id is guarantee to
only contain ASCII letter and digits to ensure that it can be used
by many programs.
Prolog terms can contain many characters and can have arbitrary
size. For these reasons, this predicate generates the Id based on
the MD5 hash of a serialization of the given Prolog term.
MD5 hashes sometimes start with an ASCII digit, which is not
supported in some languages/context (for example, the DOT language
does not allow IDs to start with a digit). For this reason, an
arbitrary ASCII letter is prefixed at the beginning of the Id.
- compound_arguments(+Term:term, -Arguments:list(term)) is det
- compound_arity(+Term:term, -Arity:nonneg) is det
- compound_name(+Term:term, +Name:atom) is semidet
- compound_name(+Term:term, -Name:atom) is det
- number_of_variables(+Term:term, -NumberOfVariables:nonneg) is det
- replace_blobs(+Term1, -Term2) is det
- Copy Term1 to Term2, replacing non-text blobs. This is required for
error messages that may hold streams and other handles to
- shared_vars(+Terms:list(term), -SharedVariables:ordset(var)) is det
- shared_vars(+Term1:term, +Term2:term, -SharedVariables:ordset(var)) is det
- write_fact(@Term) is det
- write_term(@Term) is det
- Alternative to write_canonical/[1,2] that lives up to the promise
that "terms written with this predicate can always be read back".