From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: when to call provide, first or last? Date: Mon, 27 Feb 2012 09:25:25 -0500 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1330352744 3190 80.91.229.3 (27 Feb 2012 14:25:44 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 27 Feb 2012 14:25:44 +0000 (UTC) Cc: emacs-devel@gnu.org To: Le Wang Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Feb 27 15:25:41 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1S21WG-0002Sd-SX for ged-emacs-devel@m.gmane.org; Mon, 27 Feb 2012 15:25:41 +0100 Original-Received: from localhost ([::1]:42345 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S21WF-0003G4-IE for ged-emacs-devel@m.gmane.org; Mon, 27 Feb 2012 09:25:39 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:51607) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S21W7-0003Dr-Rp for emacs-devel@gnu.org; Mon, 27 Feb 2012 09:25:37 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S21W3-0005ku-Nz for emacs-devel@gnu.org; Mon, 27 Feb 2012 09:25:31 -0500 Original-Received: from ironport2-out.teksavvy.com ([206.248.154.183]:57651) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S21W3-0005kq-Ja for emacs-devel@gnu.org; Mon, 27 Feb 2012 09:25:27 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AicFAKU/KE9FxJvl/2dsb2JhbACBX5x7eYhwnhmGGQSGUJRJhAs X-IronPort-AV: E=Sophos;i="4.73,1,1325480400"; d="scan'208";a="164796752" Original-Received: from 69-196-155-229.dsl.teksavvy.com (HELO pastel.home) ([69.196.155.229]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 27 Feb 2012 09:25:26 -0500 Original-Received: by pastel.home (Postfix, from userid 20848) id 9AC895922E; Mon, 27 Feb 2012 09:25:25 -0500 (EST) In-Reply-To: (Le Wang's message of "Mon, 27 Feb 2012 21:42:34 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.93 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.183 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:148820 Archived-At: >> Actually, such mutual dependencies aren't desirable > Can you elaborate on this a little? In my mind if two files implement > different parts of the same libraby, it's quite natural for mutual > dependencies to occur. It's actually rare. Most program decompositions result in *layering*, with no or very few mutual recursions. Mutual recursions also can be tricky: it's easy to get ill-founded recursions if you're not paying attention. Even more so if you're only testing your code in "interpreted" mode, since the byte-compiler will execute the top-level code (especially macro-expansions) in a different order, so the problem may not appear in your testing. Again, nothing terribly important to rule out such things, but enough to discourage them. Stefan