From: Eli Zaretskii <eliz@gnu.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: Change in files.el
Date: Sat, 28 Jan 2017 18:08:20 +0200 [thread overview]
Message-ID: <8360kzyxor.fsf@gnu.org> (raw)
In-Reply-To: <jwvbmurmbyt.fsf-monnier+gmane.emacs.devel@gnu.org> (message from Stefan Monnier on Sat, 28 Jan 2017 10:40:41 -0500)
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Sat, 28 Jan 2017 10:40:41 -0500
>
> >> - So that you don't have to wrap each and every use inside an `if'.
> >> - Or so you don't have to fix the docstring to say what happens when the
> >> value is nil.
> >> - Or so you can use `add-function' on it.
> >> - More generally, so that you can slightly change its behavior without
> >> having to re-implement the default behavior by hand.
> >> - Also, so as to make sure that it is *possible* to reimplement the
> >> default behavior by hand (i.e. to make sure the predicate has access to all
> >> the info it needs to reproduce the default behavior).
> > These sound minor to me (and the last two are also possible without
> > the requirement, AFAIU).
>
> Hmm... how do you get the last two without that requirement?
Are we still talking about a predicate, i.e. a function that returns
either t or nil? If so, I think the last two are so trivial that I
don't know where to begin answering your question.
> > By contrast, insisting on a function value instead of the default nil
> > forces me to go through at least one more level of indirection when
> > I need to understand what happens in a function that references such
> > variables, which sounds like a more serious trouble from my POV.
>
> I don't follow, sorry. I don't understand what you mean by "go through
> at least one more level of indirection" here. Could you explain with
> an example.
Let's say I'm looking at this code:
(defcustom save-some-buffers-default-predicate nil
...)
(unless pred
(setq pred save-some-buffers-default-predicate))
(if pred DO-SOMETHING)
Here I know immediately what happens when PRED is nil and
save-some-buffers-default-predicate is at its default value. By
contrast, this:
(defcustom save-some-buffers-default-predicate #'some-func
...)
(if save-some-buffers-default-predicate DO-SOMETHING)
requires me to go and look at some-func, which is "one more level of
indirection".
next prev parent reply other threads:[~2017-01-28 16:08 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-28 2:16 Change in files.el Richard Stallman
2017-01-28 2:46 ` Stefan Monnier
2017-01-28 9:10 ` Eli Zaretskii
2017-01-28 14:40 ` Stefan Monnier
2017-01-28 14:57 ` Eli Zaretskii
2017-01-28 15:31 ` Dmitry Gutov
2017-01-28 16:12 ` Eli Zaretskii
2017-01-28 15:40 ` Stefan Monnier
2017-01-28 16:08 ` Eli Zaretskii [this message]
2017-01-28 16:51 ` Stefan Monnier
2017-01-28 17:11 ` Eli Zaretskii
2017-01-28 17:22 ` Stefan Monnier
2017-01-28 17:30 ` Eli Zaretskii
2017-01-28 17:42 ` Stefan Monnier
2017-01-28 17:53 ` Eli Zaretskii
2017-01-29 18:59 ` John Wiegley
2017-01-30 3:57 ` Leo Liu
2017-01-30 15:58 ` John Wiegley
2017-01-31 4:19 ` Leo Liu
2017-01-31 14:01 ` John Wiegley
2017-01-31 14:46 ` Stefan Monnier
2017-01-31 16:21 ` Kaushal Modi
2017-01-31 18:40 ` Default value of variables named `*-function' [was: Change in files.el] Drew Adams
2017-02-01 8:35 ` Andreas Röhler
2017-01-28 18:41 ` Change in files.el Mark Oteiza
2017-01-28 19:37 ` Eli Zaretskii
2017-02-01 3:49 ` Mark Oteiza
2017-02-01 7:33 ` Clément Pit-Claudel
2017-02-01 12:56 ` Eli Zaretskii
2017-02-01 14:12 ` Kaushal Modi
2017-01-29 0:21 ` Richard Stallman
2017-02-04 9:18 ` Eli Zaretskii
2017-02-04 23:52 ` Richard Stallman
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=8360kzyxor.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/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).