[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

a protest

I would like to protest the decision to allow non-local GO's.  We are
doing our best to make a Common Lisp implementation on the 20 that will
produce code comparable in efficiency to Maclisp.  We are trying to
come up with ways to implement all of the hairy constructs that 
penalize only people who use them.  We have found a way to do this for
multiple values, optional arguments, &REST, etc.  I do not see any way
to implement non-local GO's without effectively turning every PROG
into a CATCH.  I realize that microcoded implementations will have
frames around for everything, and thus that they will have no problem.
But I believe that non-local GO's are not reasonable on conventional
machines.  I thought one constraint on the language design was that it
should not have features that would require conventional implementations
to put in things such as stack frames.  I believe that CATCH and THROW
should accomplish what is intended by a non-local GO, and that it is
more in the spirit of existing Lisp's to do that.  I would also be
willing to settle for a separate kind of PROG that allows that feature.
(If necessary, we will implement it that way, and provide a way to
set things so that this CATCH-PROG is used in place of the normal
PROG for users who really need to do non-local GO's.)

Also, I did not see any decision on closures.  We feel very strongly
that lexical closures are enough, and that the general CLOSE-OVER is
unnecessary.  I believe that I have a way to implement a general
CLOSE-OVER without causing overhead to non-users, but it is so hideous
that no sane person would want to do it.