What does the name “obarray” stand for?
Obarray seems to be a property unique to Elisp that is not found in other Lisp-like languages.
So its name probably came up with by the early Emacs developers; where did it come from?
What does the name “obarray” stand for?
Obarray seems to be a property unique to Elisp that is not found in other Lisp-like languages.
So its name probably came up with by the early Emacs developers; where did it come from?
Obarray seems to be a property unique to Elisp that is not found in other Lisp-like languages
This isn't correct. Emacs Lisp is similar to / inspired by MacLisp which also includes an obarray
data type, the naming of which is traced back to the oblist
type used in earlier lisps.
https://lists.gnu.org/archive/html/help-gnu-emacs/2014-05/msg00214.html explains:
Yes, Object Array.
It already existed in MACLISP:
http://www.maclisp.info/pitmanual/symbol.html
Originally, in LISP 1.5, it was an OBLIST.
cf. page 12 of http://www.dreamsongs.com/Files/HOPL2-Uncut.pdf
And in LISP 1.5 we have those occurences of OBLIST:
grep -niH -e oblist lisp15.asm
lisp15.asm:1531: AXC OBLIST,2 POINTER TO OBJECT LIST
lisp15.asm:1534: RNT DEBUGI SKIP MARKING OBLIST IF IN A
DEBUG
lisp15.asm:8871:OBLIST SYN BUCKET
lisp15.asm:8951: OBLBA,,-*-1 OBLIST OBJECT
GENER068
lisp15.asm:9921: -OBLIST
GPLI0823
lisp15.asm:9923: -*-1 OBLIST
GPLI0825
And quoting that second reference:
In 1971, Jon L White (sic) changed the representation of the data
structure that maps names (strings) to symbols from a list to a
hash table [White, 1969–1982]; thus the traditional OBLIST (list
of objects, that is, named atoms) of Lisp 1.5 was renamed the
OBARRAY. This signaled a move to a more careful choice of data
structures to optimize size or speed. Later implementations of
Lisp relied even more heavily on hash tables for parts of their
implementations. The introduction of the OBARRAY marked an
important step in the increase of sophistication of Lisp
implementors.
You can also find these data types referred to in the Common Lisp documentation on Packages:
A package is a data structure that establishes a mapping from
print names (strings) to symbols. The package thus replaces the
``oblist'' or ``obarray'' machinery of earlier Lisp systems.