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

free variable references in interpreter.



The purpose of the interpreter behavior was to be compatible with
compiler behavior that has been the accepted standard for years,
to warn or give some indication on UNDECLARE SPECIAL VARIABLES.
This should be obvious. It has been an invaluable aid in
tracking down problems in code being converted to common-lisp
and I recommend it as an option for everybody.

The default-behavior issue has nothing to do with advertising, it has
to do with the mechanics of customer support. There are two possible
settings, T and NIL. If set to NIL then users will quickly find
problems in their code relating to undeclared variables that are both
globally set and lambda bound. If set to T then most of these common
problems with scoping become more subtle, and instead turn into
lengthy phone calls. In the more rare cases you find someone that
really wants to do (SET 'FOO <x>) then (EVAL <something with FOO>).
This might happen in a production rule system for example. In these
cases we get the chance to advise people to put in the call to
PROCLAIM.

But serious folks. There is a lot more to find disturbing about MLY
than his sentiments. Maybe we'll all get a chance to take our shots
at the next common-lisp meeting.

Let me propose one of my sentiments:
Any lispmachine company that would advertise their machine just:

  "AS A COMMON LISP"

would be underselling it severely. lispmachine companies generally
seem to be saying things along the lines of "SUPPORTS COMMON LISP"
or "RUNS CODE CONFORMING TO THE ..."

But what justifies your too disparaging tone "at least they provide a
switch...?"  Give us some credit here where credit is due, it is
rather that "OF COURSE THEY PROVIDE A SWITCH!!" This is a minor
stylistic difference we have here, not something to get yourself
worked up about, bordering on insult.

There is the letter of the law here vs the intent. One of the major
intents of CL was to have interpreter/compiler compatibility. The
purpose of the LMI switch was merely along these lines.

Isn't much better in the long run to view the CL book as a constitution rather 
than as a statement of dogma?