Richard A. O'Keefe
Wed Feb 2 03:08:45 CET 2005
If memory serves me correctly, the Logix implementation of Flat Concurrent
Prolog treated atoms pretty much as Joe would like. 'xyzzy' was always
*equal* to 'xyzzy' but there might be more than one *copy* of it. If I
recall correctly (and here I probably don't) when the unification code
matched up two references to physically distinct things that turned out
to be the same values, it bent one reference to point to the other copy.
(No backtracking in FCP, so safe.) Presumably the garbage collector was
global rather than per-process.
The key point is that in a system like this there is no practical way for
a process to know or discover whether a particular atom 'exists'.
More information about the erlang-questions