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: Wed, 4 Mar 2009 00:23:20 -0500 Message-ID: <2bc5f8210903032123q28fbc802jed51b68445b162d6@mail.gmail.com> References: <2bc5f8210812271705h3f57cb29w5bb83cb02abe971@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> <2bc5f8210902161035p1f2e9125p58c2ad6c4def28fb@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 1236144217 24539 80.91.229.12 (4 Mar 2009 05:23:37 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 4 Mar 2009 05:23:37 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Wed Mar 04 06:24:54 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 1LejbB-0008Vj-Ns for guile-devel@m.gmane.org; Wed, 04 Mar 2009 06:24:54 +0100 Original-Received: from localhost ([127.0.0.1]:37261 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LejZq-0001s3-60 for guile-devel@m.gmane.org; Wed, 04 Mar 2009 00:23:30 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LejZk-0001r9-4v for guile-devel@gnu.org; Wed, 04 Mar 2009 00:23:24 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LejZh-0001nt-AD for guile-devel@gnu.org; Wed, 04 Mar 2009 00:23:22 -0500 Original-Received: from [199.232.76.173] (port=41556 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LejZh-0001ne-3G for guile-devel@gnu.org; Wed, 04 Mar 2009 00:23:21 -0500 Original-Received: from an-out-0708.google.com ([209.85.132.241]:43986) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LejZg-0001Mf-QA for guile-devel@gnu.org; Wed, 04 Mar 2009 00:23:20 -0500 Original-Received: by an-out-0708.google.com with SMTP id b6so1875748ana.21 for ; Tue, 03 Mar 2009 21:23:20 -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=e4ZJ4CpgA3BXEF/JLfLlGiLUTT/QyHzA5igJ4qN5xhI=; b=iQ5mH9G9k4X18OGdLPLViFSHVzmMdWumO2ljqpSzknxh0QSVw7Y3xp9ERCqc+fna4D Kzv7Ipqj7XFMYNWUKMq3FkaFyshCdfsgNg1nc9B/4KQY+CtVQE3KHzksyC26VbK+2V+q VtjI70e3oNwHanlhTHa5S7nIjfstIef531FU0= 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=oE9S65nJGxeELZcUIO5mrRr8MzfFx4inypyQ3RRLnRbMVCuUeRTRn4JGjCPTNSUk+E cwUbx1mdbHD1bKf9aG9lVGbD0MrGKtiRW7tOPLDAz4BywawkdB+8qzGk/so3WDnEURXo +FgS4B0HF6sVtH3VWudLttTyQSNCGD8eJVdPY= Original-Received: by 10.100.131.13 with SMTP id e13mr6365052and.57.1236144200044; Tue, 03 Mar 2009 21:23:20 -0800 (PST) In-Reply-To: <2bc5f8210902161035p1f2e9125p58c2ad6c4def28fb@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:8216 Archived-At: Hi Guilers, R6RS libraries updates! * I'm pleased to report that both the balloons example and the quotient+remainder macro example are working, which I'm going to take as more or less a vindication of the module environment-based implicit phasing approach I've been using. (I didn't quite trust it at first, but it turns out that when you call `syncase' in the right context, it does exactly what you want it to, even when it comes to modules!) * The on-disk directory organization I've been using for the interim (and around which I've written a rudimentary library load mechanism) prefixes version numbers with periods. E.g., `(foo bar baz (6))' -> foo/bar/.6/baz.scm. This seems relatively portable and would work reasonably well for a mapping of library hierarchies onto Guile module directories -- but I'm no longer sure that libraries and modules need to co-exist directly. It might be saner to offer a method of tranforming a library expression into a regular Guile module by "wrapping" it with a module declaration and then storing it on disk in a traditional location -- e.g., the library name: (foo bar baz (6)) ...would be live in $GUILE_LOAD_PATH/ice-9/r6rs-libraries/foo/bar/baz-6.scm ...and could be imported using either `(import (foo bar baz (6))' or `(use-modules (ice-9 r6rs-libraries foo bar baz-6))'. What do people think? (Of course, this still leaves open the question of how to handle version-matching...) I'm going to clean things up a bit and then I'll post some code. Regards, Julian