A critic of Guido's blog on Python's lambda
Fri May 12 22:41:12 CEST 2006
Alexander Schmolck <a.schmolck at gmail.com> writes:
> > (defvar *x*) ;; makes it special
> > (setf *x* 1)
> > (print *x*) ;;-> 1
> > (let ((*x* 2))
> > (print *x*)) ;; -> 2
> > (print *x*) ;; -> 1
> You seem to think that conflating special variable binding and lexical
> variable binding is a feature and not a bug. What's your rationale?
I thought special variables meant dynamic binding, i.e.
(defvar *x* 1)
(defun f ()
(print *x*) ;; -> 2
(let ((*x* 3))
(defun g ()
(print *x*)) ;; - > 3
That was normal behavior in most Lisps before Scheme popularlized
lexical binding. IMO it was mostly an implementation convenience hack
since it was implemented with a very efficient shallow binding cell.
That Common Lisp adapted Scheme's lexical bindings was considered a
big sign of CL's couthness. So I'm a little confused about what Ken
Tilton is getting at.
More information about the Python-list