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

Re: define



If we are casting votes on DEFINE, I would observe that of the
half-dozen or so of us here who are directly involved in our Scheme
effort, only one of us favors any legitimate status for "global"
DEFINEs.  (He happens to come from Indiana, BTW, and we may have 
succeeded in changing even his mind on this issue.) The rest of us 
have from the outset found Scheme-84's global DEFINE semantics to be 
an abhorrent violation of the principles of lexical scope.  In fact,
we assumed it was a compiler bug when we first ran across it.

Even where there is a most global environment, we are hard-pressed
to see what could justify advocacy of a special form that reaches
into it specially from an enclosed scope to destructively manipulate 
its state.  If we (collectively) need an extension of Scheme to achieve 
this effect, let's promote binding environments to first-class objects and
define a destructor that treats them uniformly.  (I believe, however,
that it is possible to write substantive, efficient, and above all,
elegant Scheme programs without the inclusion of such a destructor.)

I have always felt that the global DEFINE in Scheme-84 was a profound
design flaw that must be attributable to the unfortunate influence of
the Franz environment (both software and intellectual) in which Scheme-84
was constructed.  I understand that there is a substantial difference of
opinion on this issue, but we find it difficult to see how global DEFINEs
are even arguably compatible with what we take to be fundamental design
principles of Scheme.  In fact, as evidence of our objection to Scheme-84's
global DEFINE semantics, we have done some work on ripping this feature out 
of a copy of the Scheme-84 compiler, replacing it with S&ICP's internal 
DEFINE.

					asc

p.s. My apologies for blitzing you with such a strong opinion; we hashed
     this one out locally until it was beaten to death some time ago,
     and our opinions have admittedly become somewhat calcified....