[r6rs-discuss] R6 counterproposal

From: Joe Marshall <jmarshall>
Date: Sat, 26 May 2007 11:58:47 -0700

On 5/25/07, Thomas Lord <lord at emf.net> wrote:
> There's nothing especially new about the proposals.

Nope. And that's part of the problem.

Both FEXPRs and first-class environments make it extremely difficult
to reason about the behavior of a program. With FEXPRs, you simply
cannot tell whether any particular instance of a function call is
going to be a special form or not. It might be applicative order this
time, normal order next time. Every year or two someone tries to
re-introduce fexprs. People point out the problems and the person
ignores them and tries anyway. He comes back a month or so later and
says ``Well, I got them working, but I can't figure out how to
compile...''

I was much more gung-ho on first-class environments, but Chris Hanson
changed my mind. If an environment is first-class, then it becomes
impossible to tell where a symbol is bound. It also becomes
impossible to compile anything because you are exposing the
implementation of closures. The things you can do with first-class
environments can be done in other ways more efficiently and more
clearly.

Finally, prototype-based object systems make good toys, but not good
systems. I was a fan of Object-Lisp (Drescher) for a while, but it
had some horrendous problems: The primary one is severe brittleness
due to the `fragile base class' problem. This isn't an issue when you
have a little object system that you have full control over. It is a
huge issue when you have many developers manipulating objects and you
want to do something like persist the objects. I tried porting Object
Lisp to MIT Scheme and using first-class environments to represent the
object bindings. It was a disaster (I managed to get the microcode
confused enough to crash). After much discussion with Hanson and
Rozas I came to the conclusion that this path was seductive, but
unpromising.

There may not be much in this note that merits reply either. I'm just
pointing out that it's been tried before (several times), found
wanting (several times), and discarded (several times), for at least
the past 20 years and that a lot of *very* smart people have been
unable to make much headway. It's possible that these people are
wrong, and that you have a breakthrough method, but based on past
evidence I wouldn't put the entire Scheme community down this path.


-- 
~jrm
Received on Sat May 26 2007 - 14:58:47 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC