Newsgroups: comp.lang.misc,comp.lang.lisp,comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!fas-news.harvard.edu!newspump.wustl.edu!news.ecn.bgu.edu!psuvax1!news.pop.psu.edu!hudson.lm.com!newsfeed.pitt.edu!gatech!howland.reston.ans.net!pipex!uunet!news.cygnus.com!nntp!lord
From: lord@cygnus.com (Tom Lord)
Subject: Re: Symbol space in Scheme v. Lisp
In-Reply-To: munyer@MCS.COM's message of 23 Jan 1995 16:30:58 -0600
Message-ID: <LORD.95Jan23185312@cygnus.com>
Sender: news@cygnus.com
Nntp-Posting-Host: cygnus.com
Organization: Cygnus Support
References: <3fv8pn$llu@gort.oit.umass.edu> <3g0sah$ssc@agate.berkeley.edu>
	<3g1an2$cr@Mercury.mcs.com>
Date: Tue, 24 Jan 1995 02:53:12 GMT
Lines: 36
Xref: glinda.oz.cs.cmu.edu comp.lang.misc:20097 comp.lang.lisp:16471 comp.lang.scheme:11827


	>gpzF93@hamp.hampshire.edu (everything) writes:
	>>Does anybody know why Steele and Sussman decided on the "one-space"
	>>for Scheme over the "n-space" which LISP uses?


	In article <3g0sah$ssc@agate.berkeley.edu>,
	My guess is that it's because unlike Scheme, Lisp used to be
	dynamically scoped.  A Scheme-style "one-space" loses big when you
	have dynamic scoping.

As a point of interest, the Guile interpreter has had to resolve these
two worlds into one system.  On the one hand, we have to support elisp
with its property bindings, value bindings, and function bindings for
every symbol (and yes, elisp is a dynamicly scoped lisp).  On the
other hand, we also want to support standard Scheme.

Property and function bindings can be implemented in Standard Scheme,
but not without sacrificing performance and causing storage leaks.
So, we've added slots for these values to symbols but do not make use
of them when running Scheme.

Meanwhile, for the Scheme side, we've made variables into first class 
objects which are distinct from the symbols that name them.  This
enables us to have a module system written mostly in Scheme without
having to create new symbol universes for every namespace (a la common
lisp) and without having to perform expensive source->source
transforms on Scheme (which is how a prototype worked).

(Distinct symbol universes are also a feature of guile, but not one
used as the basis of modules.)

(Volunteers are release testing an alpha version of libguile which 
i hope to release more widely Quite Soon).

-t
