From: Drew Adams <drew.adams@oracle.com>
To: "Kai Großjohann" <kai.grossjohann@gmx.net>, help-gnu-emacs@gnu.org
Cc: "help-gnu-emacs@gnu.org List" <help-gnu-emacs@gnu.org>
Subject: RE: DynamicBindingVsLexicalBinding
Date: Sun, 13 Oct 2013 09:21:33 -0700 (PDT) [thread overview]
Message-ID: <6d5df021-be1e-40a2-966a-548a7ee9deb3@default> (raw)
In-Reply-To: <525AA42B.6030006@gmx.net>
> lexical binding allows you to support closures, and with closures
> you can do cool things.
Yes. And they remove "funarg" problems.
> with dynamic binding you can do other cool things (you can let-bind
> a variable, then call a function which calls...and the innermost
> function will reference the value you just bound -- so you can pass
> parameters around without actually having to mention them on every
> function call).
Yes. Which is especially important for a heavily interactive and
customizable program such as Emacs. Emacs users extend and otherwise
modify or adapt the source code, and they do so sometimes on the fly
and interactively.
And that's not only a good thing instead of a bad thing. It is
practically the raison d'etre of Emacs: It is a user Lisp environment
(which offers editor/UI objects such as buffers and windows).
> So each of the styles has their own advantage.
Definitely. Those who imagine that a lexical-only approach, a la
Scheme, would be a better way to go for Emacs are on the wrong track,
IMHO.
> I find that the idea that variables declared specially (e.g. with
> defvar) can be dynamically bound whereas everything else is
> lexically bound by default -- this idea is quite useful. For if
> you want to dynamically bind something to influence another
> function, you need to know which variables that other function uses
> -- and defvar is a good way to document this.
Yes, again. Common Lisp showed how to have lexical and dynamic
scope cohabit the same programming language. Its approach to this is
still a good model to follow.
Now if only Emacs Lisp had good namespace control, like Common-Lisp
packages...
next prev parent reply other threads:[~2013-10-13 16:21 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-12 17:56 DynamicBindingVsLexicalBinding Andreas Röhler
2013-10-12 18:35 ` DynamicBindingVsLexicalBinding Dmitry Gutov
2013-10-12 20:53 ` DynamicBindingVsLexicalBinding Drew Adams
2013-10-13 5:09 ` DynamicBindingVsLexicalBinding Thien-Thi Nguyen
2013-10-13 7:54 ` DynamicBindingVsLexicalBinding Andreas Röhler
2013-10-13 13:46 ` DynamicBindingVsLexicalBinding Kai Großjohann
2013-10-13 16:21 ` Drew Adams [this message]
2013-10-14 11:21 ` DynamicBindingVsLexicalBinding Phillip Lord
2013-10-14 13:45 ` DynamicBindingVsLexicalBinding Drew Adams
2013-10-14 16:05 ` DynamicBindingVsLexicalBinding Phillip Lord
2013-10-14 21:32 ` DynamicBindingVsLexicalBinding Kai Großjohann
2013-10-15 11:27 ` DynamicBindingVsLexicalBinding Phillip Lord
2013-10-15 20:43 ` DynamicBindingVsLexicalBinding Kai Großjohann
2013-10-16 12:57 ` DynamicBindingVsLexicalBinding Phillip Lord
[not found] ` <mailman.4127.1381928277.10748.help-gnu-emacs@gnu.org>
2013-10-16 14:26 ` DynamicBindingVsLexicalBinding Barry Margolin
[not found] ` <mailman.3929.1381681317.10748.help-gnu-emacs@gnu.org>
2013-10-14 11:27 ` DynamicBindingVsLexicalBinding Rustom Mody
2013-10-14 11:15 ` DynamicBindingVsLexicalBinding Phillip Lord
[not found] <mailman.3891.1381600459.10748.help-gnu-emacs@gnu.org>
2013-10-13 3:34 ` DynamicBindingVsLexicalBinding Barry Margolin
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=6d5df021-be1e-40a2-966a-548a7ee9deb3@default \
--to=drew.adams@oracle.com \
--cc=help-gnu-emacs@gnu.org \
--cc=kai.grossjohann@gmx.net \
/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.
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).