1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
\libdoc{gensym}{Generate unique identifiers}
Gensym (\textbf{Gen}erate \textbf{Sym}bols) is an old library for
generating unique symbols (atoms). Such symbols are generated from
a base atom which gets a sequence number appended. Of course there
is no guarantee that `catch22' is not an already defined atom and
therefore one must be aware these atoms are only unique in an
isolated context.
The SWI-Prolog gensym library is thread-safe. The sequence numbers
are global over all threads and therefore generated atoms are unique
over all threads.
\begin{description}
\predicate{gensym}{2}{+Base, -Unique}
Generate a unique atom from base \arg{Base} and unify it with \arg{Unique}.
\arg{Base} should be an atom. The first call will return \mbox{<base>1},
the next \mbox{<base>2}, etc. Note that this is no guarantee that the atom
is unique in the system.
\predicate{reset_gensym}{1}{+Base}
Restart generation of identifiers from \arg{Base} at <Base>1. Used to
make sure a program produces the same results on subsequent runs. Use
with care.
\predicate{reset_gensym}{0}{}
Reset gensym for all registered keys. This predicate is available for
compatibility only. New code is strongly advised to avoid the use of
reset_gensym or at least to reset only the keys used by your program
to avoid unexpected side effects on other components.
\end{description}
|