From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Le Wang <l26wang@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: when to call provide, first or last?
Date: Mon, 27 Feb 2012 08:35:21 -0500 [thread overview]
Message-ID: <jwvmx84iew0.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <CAM=K+irP2nEXBLS9vBfkYt7qvXE1uoS+7GqnU-hq_9kX5iV6Wg@mail.gmail.com> (Le Wang's message of "Mon, 27 Feb 2012 20:47:49 +0800")
> What's the accepted idiom for calling (provide 'foo-feature)? I picked up
> the habit of calling it first in every library I write. This way two
> libraries can call functions from each other without causing a circular
> dependency.
Actually, such mutual dependencies aren't desirable: sometimes they're
hard to avoid so we prefer to live with them, but that doesn't change
the fact that they're not good.
Putting the provide at the end makes sure that if featurep says t, then
it means thatthe feature is actually available, whereas if it's at the
beginning, featurep returning t only mean "we've started to lead the
feature, and well, maybe we've actually loaded it all by now, but I'm
not sure".
The difference is sufficiently unimportant to deserve bikeshedding,
I guess, but in any case, the convention is to put it at the end.
Like every convention, there can be exceptional circumstances that
justify doing it differently, but they have to be exceptional rather
than only based on taste.
Stefan
next prev parent reply other threads:[~2012-02-27 13:35 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-27 12:47 when to call provide, first or last? Le Wang
2012-02-27 12:59 ` Juanma Barranquero
2012-02-27 13:09 ` Le Wang
2012-02-27 13:25 ` Juanma Barranquero
2012-02-27 13:32 ` Le Wang
2012-02-27 13:44 ` Juanma Barranquero
2012-02-27 13:57 ` Le Wang
2012-02-27 14:05 ` Drew Adams
2012-02-27 13:35 ` Stefan Monnier [this message]
2012-02-27 13:42 ` Le Wang
2012-02-27 14:25 ` Stefan Monnier
2012-02-27 15:08 ` Harald Hanche-Olsen
2012-02-27 15:46 ` Le Wang
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=jwvmx84iew0.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=emacs-devel@gnu.org \
--cc=l26wang@gmail.com \
/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).