>>>> "Hrvoje" == Hrvoje Niksic
<hniksic(a)srce.hr> writes:
Hrvoje> sperber(a)Informatik.Uni-Tuebingen.De (Michael Sperber [Mr. Preprocessor])
writes:
> Someone (Hrvoje?) proposed that we change the semantics of let to
work
> like in Common Lisp,
Hrvoje> It has been discussed multiple times in the past. In fact, it would
Hrvoje> have already been done if the fate hadn't transpired against Chuck and
Hrvoje> Ben working on XEmacs.
> This would entail changing existing Emacs Lisp code in an
> incompatible fashion.
Hrvoje> Can you explain what you mean by incompatible?
Old code will obviously not run under the new Elisp engine, because it
may intrinsically use dynamic binding for non-DEFVAR'ed names.
New code will not run under the old engine because that does not
support static binding, even if it syntactically is totally acceptable
to the old engine.
Also, the Elisp compiler does not reliably detect which variables
should be DEFVAR'ed which aren't already. Consider the following
program fragment which has different semantics depending on the
interpretation of LET:
(defun f (g)
(let ((x 2))
(funcall g)))
(let ((x 1))
(f #'(lambda () x)))
... and watch what sort of (bogus) message the compiler produces.
--
Cheers =8-} Chipsy
Friede, Völkerverständigung und überhaupt blabla