From: owner-xemacs-beta(a)xemacs.org
[mailto:owner-xemacs-betaï¼ xemacs.org]On Behalf Of Michael Sperber [Mr.
Preprocessor]
Sent: Thursday, July 16, 1998 2:43 AM
To: xemacs-beta(a)xemacs.org
Subject: Re: scheme - my opinion
>>>>> "RP" == Reggie Perry <Reggie.Perry(a)digital.com>
writes:
RP> I think that tail recursion could be done in common lisp.
How?
Hmmm, CMUCL does it already in the compiler and since its compiled code is
more debuggable than XEmacs interpreted code, I feel that I can point to it
as an example. See
http://www.mindspring.com/~rtoy/software/cmu-user/node140.html#SECTION006500
00000000000000
RP> It seems to me to be contrary to scheme to have,for example,
doc
RP> strings in functions like they are in emacs lisp and common lisp,
Indeed you would store them in a different way. That does not mean
you could not implement a defun emulation in about three lines of
Scheme. What's the problem?
The thing I like about scheme is that theres not defvar, defparameter,
defconstant, defun. Theres just define.
RP> 3. Contrary to what Michael says, I think that it will be
less emulation
RP> going on from emacs lisp to common lisp than from emacs
lisp to scheme.
RP> We can always ask Kent Pitman what he thinks. :-)
Naively, one could
RP> imagine havine an emacs-lisp-user package like the
standard defined
RP> common-lisp-user package except that in this package, all
variables are
RP> special and the let acts something like fluid-let which
is defined in
RP> some schemes. In addition to an emacs-lisp mode, you
could also have an
RP> emacs-common-lisp mode. Both modes are package aware and
when you send
RP> regions or definitions to XEmacs, the code gets evaluated
in the correct
RP> semantic environment.
That sounds nice in theory, but someone needs to actually look into
the technical issues and *do it*.
Well thats true both ways. I beleive that either language would be cool, but
theres going to be a bit of pain involved during the transition.
RP> If you create a defun macro, why use scheme?
Oh, come on, Reggie! Pl-lease!
:-)
RP> Having a standard just reduces the number of non-standard
fundamental
RP> language extensions you need like a low level macro system,
RP> records/structures, objects, and conditions. You would like the
RP> semantics of these things to have been worked out through
blood, sweat,
RP> and usage and not have to worry about having to change
the semantics
RP> because now they are not powerful enough.
I couldn't agree more. My perspective on this is that *not enough*
blood and sweat has gone into Common Lisp. (Actually, CL hasn't bled
enough ...) The abstractions in CL are usually half-assed and not as
general and powerful as they could be. (Otherwise, CL and Scheme
would be identical.) I guess I'll have to finally finish that
write-up on the module system.
I agree with this on some points. For example, I wish that sequences were an
object so that I could add new things with sequence semantics and have the
existing common lisp sequence functions work on them. But, the things that
have gone into the language are the result of many man-years of people using
lisp derivatives and then making compromises so that people could port to it
without dying from old age in mid-port. The problem with scheme is that
while its a great abstraction building tool, the baseline may be a bit too
low. I remember reading that Jeffrey Siskind moved to scheme and it took him
five years to get his abstractions working to his liking. How long will it
take me? I consider myself to be nowhere near his skill level.
OK. I may lean more toward scheme. Here is what would make for a kick ass
system. All IMHO of course.
A module system like SML; Higher order modules included.
CLOS like object system + a MOP like STk. With this you really don't need
structures and you can use the MOP to properly expose the object-based C
code in the lower layers.
A condition system with conditions being objects like Common Lisp.
Generational garbage collection with excess space being given back to the OS
after a long period of non-use. I like to run my emacs for months on end
without restarting it. :-)
A fast scheme engine. This is the tough one. Scheme48 is currently a bit too
slow for this. Of course clisp has a lot of hand coded C/assembly so maybe
making a better prescheme compiler would do the trick. I really like the
concept of scheme48 so it would be great to devise some way to get large
speed benefits while retaining all of the good layering stuff. Gambit is
good, but goes to C not bytecode. Bigloo makes too many compromises to
scheme for my taste especially wrt. call/cc. If you are going to use scheme,
I would want call/cc, delay, force and the syntax-case macro system. Maybe
you can talk Kent Dybvig into making Chez Scheme open source. :-)
This probably runs into the realm of fantasy. On the other hand, you may
have it all implemented on your home machine.
--
Cheers =8-} Chipsy
Friede, Vvlkerverstdndigung und |berhaupt blabla
-Reggie