On 17 Jul 1998 at 09:11:43 +0200, sperber(a)informatik.uni-tuebingen.de
(Michael Sperber [Mr. Preprocessor]) wrote:
Jerry> Common Lisp is not inherently incompatible with tail
recursion
Jerry> elimination.
I never said that, and you're quoting both of us out of context. The
issue was emulation of Scheme inside Common Lisp. Once you lose
tail-recursiveness, you can't get it back.
I did, in fact, lose track of the context of your remarks, for which I
apologize. I knew you had never said that, but that wasn't the point I
wanted to make anyway. To make that point, I'll have to digress for a
moment.
Since the standard does not mandate proper tail recursiveness, and
since not all implementations have it, you cannot rely on it being
present in general Common Lisp programming. This has a strong impact
on programming style.
That is absolutely correct. But, are we talking about replacing the
elisp substrate with *any* [Common Lisp/Scheme] engine, or with *some
particular* engine? If the former, then you have to program against the
lowest common denominator which, in the case of Common Lisp, does not
include tail recursion elimination.
My impression, though, is that the latter is intended. In that case, if
the intention is to provide a Common Lisp substrate and a Scheme
emulation on top, then it would be wise to pick a Common Lisp
implementation that does tail recursion elimination. In that case, I
see no reason why you could not provide a Scheme emulation that also
provides tail recursion elimination. Note that this is independent of
whether extension programmers take advantage of the TRE capabilities of
the Common Lisp substrate or not (i.e., whether they program for general
Common Lisp implemenations, or optimize for the specific engine chosen).
So, the point I was trying to make with my previous message is that
Common Lisp implementations that do TRE actually exist. If Common Lisp
is judged to be a desirable replacement for elisp, then one could
identify TRE as a necessary (or at least highly desirable) property of
the specific implementation chosen.
Two more things, in random order:
(1) I am still interested in a further clarification of call/cc
vis-a-vis lexical closures.
(2) Do not consider me, by any means, a Common Lisp proponent. I am
merely trying to be helpful by providing some bits of information
that I happen to have in my head. I share the concerns of some
others, namely that:
(a) Free CL implementations seem to be having a hard time moving
from CLtL1 to CLtL2, much less to full ANSI compliance (and this
is true of CLISP in particular); and
(b) CL may be too heavyweight for an XEmacs implementation.
Regards,
--
Jerry James
Email: jerry(a)cs.ucsb.edu
WWW:
http://www.cs.ucsb.edu/~jerry/