emacs-devel
[Top][All Lists]
Advanced

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

Re: "Misunderstanding of the lambda calculus"


From: Stefan Monnier
Subject: Re: "Misunderstanding of the lambda calculus"
Date: Tue, 31 Jan 2006 15:09:08 -0500
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

[ I don't have the original email because messages from the last three days
  from gnu.org bounced (the gnu.org mailer got black-listed "by mistake" once
  again and my sysadmins keep insisting on using host-based backlisting) ]

I agree that the original text is biased against dynamic scoping and elisp.
But just for the record:

| The section on programming languages seems to be POV. It refers to Emacs
| Lisp but not ALGOL 60 as "archaic" (only Emacs Lisp is still in use).

It should probably say something like "older Lisps", since it is indeed
a fact (AFAIK) that all Lisps defined "recently" (around the time or
EuLisp, Common Lisp, Scheme, ...) use lexical scoping by default.

| It incorrectly lauds Common Lisp as lacking dynamic binding (all Lisps
| need dynamic binding, which CL calls "special variables").

While many Lists offer dynamic scoping, Lisps don't *need* dynamic scoping
more than any other language.  E.g. Scheme is a prominent Lisp dialect that
does not provide dynamic scoping (tho macros for it exist, of course).

| The claim that binding in Lisps don't match the lambda calculus because
| their authors "misunderstand" the calculus (rather than because the
| calculus in pure form has poor efficiency) is just a damn lie.

I think it's just a misunderstanding itself: the story goes that the
original Lisp-1.5 interpreter indeed ended up using dynamic scoping by
mistake (while the compiler used static scoping).  AFAIK all subsequent
languages that used dynamic scoping did it on purpose rather than
by mistake.  I.e. dynamic scoping originally appeared because of
a misunderstanding, but Richard consciously chose dynamic scoping over
static scoping for Emacs Lisp.

As for efficiency: except for naive interpreters, static scoping is
generally more rather than less efficient.


        Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]