all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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



  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

* 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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.