Subject: Re: Lisp vs Java
From: rpw3@rpw3.org (Rob Warnock)
Date: Wed, 15 Oct 2008 08:48:01 -0500
Newsgroups: comp.lang.lisp
Message-ID: <X9qdnbmiarMMaWjVnZ2dnUVZ_s_inZ2d@speakeasy.net>
Javier  <javuchi@gmail.com> wrote:
+---------------
| Raymond Toy <raymond....@ericsson.com> wrote:
| > Why would things stop working if CLOS were removed? �Well, of course,
| > if you used CLOS, things would break, but if you didn't, there
| > wouldn't need to be any breakage would there?
| 
| Acording to HyperSpec:
...[trimmed]...
| So the question is: what is the limit of what do you consider CLOS?
| Just "defclass" and satelite macros and functions, or do you also
| include more profound statements like deftype? Does not defstruct
| define an object? Do you include defgeneric and defmethod too? Do you
| consider built-in types CLOS objects?
| 
| I think CLOS is very much integrated into CL, up to the point that it
| is not clear where are its boundaries... I would not say that you can
| remove it without side effects...
+---------------

I think what Raymond may be referring to is that even in some
current implementions of Common Lisp, CLOS is still very much
an "add-on", specifically, those whose CLOS implementation is
based on PCL (Portable Common Loops). For example, when rebuilding
CMUCL (as Raymond is quite aware!), first a very small "kernel"
core image is built without CLOS or even the compiler, then the
compiler is loaded in, and only then is CLOS compiled and loaded in
and the whole image saved out as the final core image. So during
this process there is a considerable period of time when there
*isn't* a CLOS in the system yet, yet there *is* DEFSTRUCT & DEFTYPE!!
[They are, in fact, used to bootstrap CLOS.]


-Rob

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