From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.devel Subject: Re: r6rs libraries, round two Date: Sun, 28 Jun 2009 23:40:30 +0200 Message-ID: References: <2bc5f8210905291331u7259389et26e2ad7d88b32f46@mail.gmail.com> <878wkerxar.fsf@arudy.ossau.uklinux.net> <874ouzziqo.fsf@gnu.org> <2bc5f8210906271720u433803a1u5c6a843d3b042288@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1246225338 24692 80.91.229.12 (28 Jun 2009 21:42:18 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 28 Jun 2009 21:42:18 +0000 (UTC) Cc: Ludovic =?utf-8?Q?Court=C3=A8s?= , guile-devel@gnu.org To: Julian Graham Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sun Jun 28 23:42:11 2009 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1ML28Y-0001nr-Ch for guile-devel@m.gmane.org; Sun, 28 Jun 2009 23:42:10 +0200 Original-Received: from localhost ([127.0.0.1]:39005 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ML28X-000069-SN for guile-devel@m.gmane.org; Sun, 28 Jun 2009 17:42:09 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1ML28R-000064-5m for guile-devel@gnu.org; Sun, 28 Jun 2009 17:42:03 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1ML28M-00005j-Fl for guile-devel@gnu.org; Sun, 28 Jun 2009 17:42:02 -0400 Original-Received: from [199.232.76.173] (port=39613 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ML28M-00005g-Dm for guile-devel@gnu.org; Sun, 28 Jun 2009 17:41:58 -0400 Original-Received: from a-sasl-quonix.sasl.smtp.pobox.com ([208.72.237.25]:43626 helo=sasl.smtp.pobox.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1ML28J-0007qa-0x; Sun, 28 Jun 2009 17:41:55 -0400 Original-Received: from localhost.localdomain (unknown [127.0.0.1]) by a-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTP id 929FA23F80; Sun, 28 Jun 2009 17:40:17 -0400 (EDT) Original-Received: from unquote (unknown [81.38.191.92]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTPSA id 5E67C23F7F; Sun, 28 Jun 2009 17:40:13 -0400 (EDT) In-Reply-To: <2bc5f8210906271720u433803a1u5c6a843d3b042288@mail.gmail.com> (Julian Graham's message of "Sat, 27 Jun 2009 20:20:15 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.92 (gnu/linux) X-Pobox-Relay-ID: 458A17F8-642C-11DE-9CED-DC021A496417-02397024!a-sasl-quonix.pobox.com X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (beta) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:8794 Archived-At: Hi Julian, On Sun 28 Jun 2009 02:20, Julian Graham writes: > With the 1.9 series launched, I wanted to start thinking about R6RS > libraries again, since it would be awesome to have some semblance of > an implementation ready by October. Yes! >> I think such issues should lead us to have a `:version' option that does >> just what's needed for R6RS, and does not try to do anything smart >> (which could seem to be non-deterministic). =C2=A0We could even go as fa= r as >> discouraging its use in the manual. > > Alright -- so, to summarize what (I think) has been decided: > > 1. Having more than one version of a module loaded at a time in a > single Guile process / VM is not going to be supported. I agree. > 2. Mixing load calls that specify version with load calls that do not > should produce deterministic behavior independent of the set of > already-loaded modules. (As described here: [1].) I disagree. I don't think that you can do (2) without (1). Your solution of doing whole-program analysis is very much in the spirit of R6RS, but it is not in the spirit of Lisp, in my opinion at least. Larry Wall was right. Lisp is like oatmeal: of a uniform, mushy consistency. A Lisp system is composed of a procedures and data, permeating each other. You can add (or remove!) procedures and data, and it's still basically the same system. Of course we have modules to keep things manageable, but Guile's take is that modules are mutable entities. You can enter modules and make new definitions, or even remove old ones. Indeed you may have a long-running process that you hack for months, mutating the system over time in response to needs that crop up over time. Of course, with so much mutation -- definition is mutation, after all, in a live system -- you just have to have good practices to keep things under control. Any program that imports unqualified module names (without versions) is inherently not "future-portable" anyway, for the reasons that Ludovic and others discussed on r6rs-discuss[0]. So /we don't even need to worry about it/. We have to let "good practices" take care of us here. [0] http://lists.r6rs.org/pipermail/r6rs-discuss/2007-May/002332.html. The only fully specified program is one that has all of the versions declared, but even that program may not have deterministic results -- if an incompatible library is already loaded in the Guile session, the r6rs program or library will fail to load. I actually think that doing a whole-program analysis is actively harmful to the future of Scheme. That's a bit hyperbolic, but it is my opinion. To me, Lisp is about living, adaptable systems -- not about static programs. There's no need to let mistakes on the part of the R6RS editors take us farther down the static path. Fortunately, we can comply to the letter of the standard, and not the spirit. Back to your question though, what did you think about my symlink solution[1]? [1] http://article.gmane.org/gmane.lisp.guile.devel/8585 Cheers, Andy --=20 http://wingolog.org/