From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Julian Graham Newsgroups: gmane.lisp.guile.devel Subject: Re: r6rs libraries Date: Mon, 16 Feb 2009 13:35:40 -0500 Message-ID: <2bc5f8210902161035p1f2e9125p58c2ad6c4def28fb@mail.gmail.com> References: <2bc5f8210812271705h3f57cb29w5bb83cb02abe971@mail.gmail.com> <2bc5f8210812282238p1f91f352id7eca5280dc9ff6a@mail.gmail.com> <2bc5f8210901012010g2ebb6effx5c966d0e26fe382b@mail.gmail.com> <8763kt48zi.fsf@gnu.org> <2bc5f8210901111521i1a5ec85em65ee20135cc55ebb@mail.gmail.com> <877i4z89jy.fsf@gnu.org> <2bc5f8210901251627t5d59f9fg5bc5dcceaf2a0b9f@mail.gmail.com> <2bc5f8210901280926o399f4505nc1d30c6017886a81@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1234809360 7699 80.91.229.12 (16 Feb 2009 18:36:00 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 16 Feb 2009 18:36:00 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Feb 16 19:37:14 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 1LZ8L7-00064r-Ko for guile-devel@m.gmane.org; Mon, 16 Feb 2009 19:37:11 +0100 Original-Received: from localhost ([127.0.0.1]:60226 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LZ8Jn-0004w3-JE for guile-devel@m.gmane.org; Mon, 16 Feb 2009 13:35:47 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LZ8Jk-0004vi-Js for guile-devel@gnu.org; Mon, 16 Feb 2009 13:35:44 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LZ8Jj-0004vU-6m for guile-devel@gnu.org; Mon, 16 Feb 2009 13:35:43 -0500 Original-Received: from [199.232.76.173] (port=43910 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LZ8Jj-0004vR-1R for guile-devel@gnu.org; Mon, 16 Feb 2009 13:35:43 -0500 Original-Received: from yw-out-1718.google.com ([74.125.46.154]:22424) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LZ8Ji-0004sE-ES for guile-devel@gnu.org; Mon, 16 Feb 2009 13:35:42 -0500 Original-Received: by yw-out-1718.google.com with SMTP id 6so1116473ywa.66 for ; Mon, 16 Feb 2009 10:35:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=ewHfFRBOYa5EzQrT9xZMs2DyKTzJcCzsTzdtzIm7dNk=; b=QdW3uk6qvsTmWaxSwOHF3xR2QwwwP7VFBW5OnWVRJ6OBYn+IOUNTSU6H0hhzZpAqY5 xHYJavj3cFwICyWWQdWcDu61mKktc3q8aJ1xt9MRO+4DOjJfR+zbjEFi3Zrivn8+A7YW ki/iW0hTNaFLzkVWNZAGTTMealKre1/oS7H7Y= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=wHS8dgIEc+0JFcTngifwlm4e2BplXCJ8IyLRWf6xTPlW3+Mk0lq0mHCUp33FDHWETH SPJQBsASQ13fMIDe0F44RfjQDEmZv3L4O2/W684pAg9j3lTdKIcR6U4o2zDGCYLzMfra 4AlhgAn5jst3lEAWqVHUAhdDc+tpTZMGllf50= Original-Received: by 10.150.54.6 with SMTP id c6mr4019578yba.54.1234809340411; Mon, 16 Feb 2009 10:35:40 -0800 (PST) In-Reply-To: <2bc5f8210901280926o399f4505nc1d30c6017886a81@mail.gmail.com> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) 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:8169 Archived-At: Hi Guilers, Just wanted to give an update on the status of the library system I've been working on: * As per the discussion above, my implementation uses an implicit phasing approach (i.e., it doesn't do multiple instantiation) along with `(ice-9 syncase)' to handle expand-time evaluation -- specifically, by way of evaluation environments based on on-the-fly creation of custom module interfaces. I wasn't able to find Abdulaziz's ACM paper, but his "formal comment" on the subject of R6RS phasing [1] was informative. (In fact, a lot of the formal comments were handy: [2].) I haven't yet delved into how severe the breakage is where there are differences between Guile's `syntax-case' and R6RS's, but I'm hoping it's, you know, mild. * Given the above, my current implementation is hovering at about 200 lines, whereas the current reference implementations, because they don't presume an existing macro or module system, are several orders of magnitude larger. Thanks are due to Tom Lord (and everyone else who designed Guile's module / interface system) for making this possible, if not downright easy. * At the moment, R6RS libraries can "import" Guile modules directly, but the reverse is not true, partly because I can't figure out a good way to map version information onto the filesystem in a way that Guile's module system can understand. My initial thought was to do it such that a library's version would map to its module name, a la: (library (foo bar baz (6)) would live in /foo/bar/6/baz.scm ...but Guile doesn't like numbers in the module name. Right now I'm trying to think of way to do a transformation on a library expression such that multiple versions of the same library could live in the same Guile module and be accessed individually by some kind of manifest at "use" time, but I can't figure out what that module name and the extra, associated API should look like. * It would be cool if the module system had hooks of some sort to allow it to receive hints about locating modules. * The "party balloons" example from the R6Rs is working, at least intermittently. The "quotient-and-remainder" example is almost there. Regards, Julian [1] - http://www.r6rs.org/formal-comments/comment-123.txt [2] - http://www.r6rs.org/formal-comments/comment-92.txt