unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: jyavner@member.fsf.org, emacs-devel@gnu.org
Subject: Re: "Misunderstanding of the lambda calculus"
Date: Tue, 31 Jan 2006 15:09:08 -0500	[thread overview]
Message-ID: <87y80wkxbd.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <E1F3zql-0000ly-Ft@fencepost.gnu.org> (Richard M. Stallman's message of "Tue, 31 Jan 2006 13:03:31 -0500")

[ 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

  parent reply	other threads:[~2006-01-31 20:09 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1F3FdP-0002xe-OW@monty-python.gnu.org>
2006-01-29 17:51 ` "Misunderstanding of the lambda calculus" Jonathan Yavner
2006-01-29 18:32   ` David Kastrup
2006-01-30 18:46     ` Richard M. Stallman
2006-01-30 19:28       ` David Kastrup
2006-01-31 18:03         ` Richard M. Stallman
2006-01-31 19:47           ` Kevin Rodgers
2006-01-31 20:09           ` Stefan Monnier [this message]
2006-02-01 19:38             ` Richard M. Stallman
2006-01-31 21:57           ` David Kastrup
2006-02-01  8:12             ` Alan Mackenzie
2006-02-01  8:52               ` David Kastrup
2006-02-01 10:40                 ` Miles Bader
2006-02-01 15:01                   ` Jonathan Yavner
2006-02-01 19:39             ` Richard M. Stallman
2006-01-29  5:42 Chong Yidong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87y80wkxbd.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=emacs-devel@gnu.org \
    --cc=jyavner@member.fsf.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).