Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!rochester!udel!gatech!news.sprintlink.net!newsfeed.internetmci.com!news.mathworks.com!newshost.marcam.com!usc!sdd.hp.com!night.primate.wisc.edu!aplcenmp!hall
From: hall@aplcenmp.apl.jhu.edu (Marty Hall)
Subject: Re: Byte code compilers...
Message-ID: <DF5Mv8.H97@aplcenmp.apl.jhu.edu>
Organization: JHU/APL AI Lab, Hopkins P/T CS Faculty
References: <43jv52$ip1@mira.sara.nl> <vrotneyDF4oyA.J5H@netcom.com>
Date: Tue, 19 Sep 1995 13:30:44 GMT
Lines: 27

In article <vrotneyDF4oyA.J5H@netcom.com> vrotney@netcom.com (William Paul Vrotney) writes:

>I recommend that you FTP Emacs 19 as it includes a pretty full Common Lisp
>addition.

Note, however, that elisp (Emacs Lisp) is not lexically scoped, so you
won't have closures. You get the CL extensions by doing (require 'cl);
they are not in the default environment in either GNU Emacs or XEmacs.
XEmacs 19.13 also has CL-style backquote in the default
environment. You can get a version of backquote in GNU Emacs via
(require 'backquote), but (at least in 19.27) it is quite a bit
different than CL-style backquote. Finally, XEmacs lets you do
#'(lambda ...) so that the lambda gets byte-compiled, but you still
don't get closures, and #'foo looks up the definition of foo at
runtime, unlike in CL where you get the definition at compile time.
Thus:

(defun foo () "Foo")
(setq test #'foo)
(funcall test) --> [CL and elisp] "Foo"
(defun foo () "Bar")
(funcall test) --> [elisp] "Bar"
                   [CL]    "Foo"

Cheers-
						- Marty
(proclaim '(inline skates))
