Subject: Re: obstack
From: rpw3@rpw3.org (Rob Warnock)
Date: Wed, 20 Apr 2005 04:25:58 -0500
Newsgroups: comp.lang.lisp
Message-ID: <kpidnYb4luC7vfvfRVn-pQ@speakeasy.net>
Christopher C. Stacy <cstacy@news.dtpq.com> wrote:
+---------------
| I have never heard of this OBSTACK of which you speak.
+---------------

I suspect he meant either OBLIST or OBARRAY, predecessors to the
modern per-package internal hash-table of symbols. From Graham's
"On Lisp" <http://www.paulgraham.com/lib/paulgraham/onlisp.pdf>,
"Appendix: Packages":

    Packages are Common Lisp's way of grouping code into modules.
    Early dialects of Lisp contained a symbol-table, called the oblist,
    which listed all the symbols read so far by the system. Through
    a symbol's entry on the oblist, the system had access to things
    like its value and its property list. A symbol listed in the oblist
    was said to be interned.

    Recent dialects of Lisp have split the concept of the oblist
    into multiple packages. Now a symbol is not merely interned,
    but interned in a particular package.  ...

And page 12 of Gabriel and Steele's "Evolution of Lisp" (the "uncut"
version <http://www.dreamsongs.com/NewFiles/HOPL2-Uncut.pdf>) says:

    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, 19691982]; 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.


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607