File: gensym.doc

package info (click to toggle)
swi-prolog 8.2.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 78,084 kB
  • sloc: ansic: 362,656; perl: 322,276; java: 5,451; cpp: 4,625; sh: 3,047; ruby: 1,594; javascript: 1,509; yacc: 845; xml: 317; makefile: 156; sed: 12; sql: 6
file content (31 lines) | stat: -rw-r--r-- 1,372 bytes parent folder | download | duplicates (5)
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}