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, round three Date: Sun, 27 Dec 2009 15:04:47 -0500 Message-ID: <2bc5f8210912271204m2912d75qa6bf7d5238806c33@mail.gmail.com> References: <2bc5f8210909261310q7a32ff83x8ebceb44a78d55c5@mail.gmail.com> <2bc5f8210911011126j66abb05ck57e0610903932146@mail.gmail.com> <2bc5f8210911171255m5a731127idd6876d258584e25@mail.gmail.com> <87my2kmxay.fsf@delenn.lan> <2bc5f8210911172240k62bb28b0nac2e8107a6d3b945@mail.gmail.com> <2bc5f8210912121924k2938dbcfr526aa3bb8a0dae03@mail.gmail.com> <2bc5f8210912230735t65d7b7ecpd6851de8f3cfb5bf@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e6d7e162f72154047bbb4c97 X-Trace: ger.gmane.org 1261944311 22207 80.91.229.12 (27 Dec 2009 20:05:11 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 27 Dec 2009 20:05:11 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sun Dec 27 21:05:04 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 1NOzMM-0003cr-At for guile-devel@m.gmane.org; Sun, 27 Dec 2009 21:05:02 +0100 Original-Received: from localhost ([127.0.0.1]:47492 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NOzMM-0004TD-1o for guile-devel@m.gmane.org; Sun, 27 Dec 2009 15:05:02 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NOzMF-0004T0-IS for guile-devel@gnu.org; Sun, 27 Dec 2009 15:04:55 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NOzM9-0004SY-VA for guile-devel@gnu.org; Sun, 27 Dec 2009 15:04:54 -0500 Original-Received: from [199.232.76.173] (port=52889 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NOzM9-0004ST-QE for guile-devel@gnu.org; Sun, 27 Dec 2009 15:04:49 -0500 Original-Received: from mail-ew0-f224.google.com ([209.85.219.224]:49277) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NOzM9-0000j8-5e for guile-devel@gnu.org; Sun, 27 Dec 2009 15:04:49 -0500 Original-Received: by ewy24 with SMTP id 24so11390312ewy.26 for ; Sun, 27 Dec 2009 12:04:48 -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; bh=C+ro90fYihBwG0JM344WaV/+CKcpylOU3PTe7DjNR9g=; b=Ra6Ayc2+xF62GlOEVU49Q02nJFXgISTs7/BB/hUBlhPhNIC10AceVhtghzxYUOSR6u B1gUcXbf14bZakVbBuIWMVUxgPEpgeLVXqsjrMqfYVxwY3O1JDQlOWyG36lk/ImXdld4 MW11bzLEXiY4csyIleugQWOtNnbPgbBq2ewzI= 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; b=ZqClBu3zFtipB6LWTgTp8YBuUPdsfw9p30KvK+p1nJl/2KLeBKNBr2Xmi47tBxJfY/ pxZl+U46CjcaLV8mBV9DLmevwKmnpBinwgi5YDnecio9KZ+7ddt+16aTExRQyqBZFVpL BgcRK93mJAOnNLpVBaM7mGFPeJwNysmpPMh8A= Original-Received: by 10.216.88.67 with SMTP id z45mr983944wee.112.1261944287207; Sun, 27 Dec 2009 12:04:47 -0800 (PST) In-Reply-To: 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:9799 Archived-At: --0016e6d7e162f72154047bbb4c97 Content-Type: text/plain; charset=ISO-8859-1 Hi all, Find attached a revised and polished version of the `(ice-9 r6rs-libraries)' module I submitted a couple of months ago. This version includes the following changes: * The library transformer code's been cleaned up and compacted (by more than 30%) and now uses a `defmacro' form similar to the one used by `use-modules' and `define-module' instead of the messy syncase-based transformer it was using originally. * I've re-organized the code to more closely resemble the structure of `use-modules' and 'define-module' -- the macros delegate syntax parsing to a set of "processing" functions. In addition to making the macros simpler, this should make it easier to unify the module and library systems in the future, if desired. * I've added an `import' macro as specified by R6RS 8.1 "Top Level Program Syntax" [0]. * The module also supports the convention, specified by SRFI-97, that SRFIs can be loaded as R6RS libraries by importing them as `(srfi :[n])' -- my implementation transforms library names of that form to the form used by Guile, `(srfi srfi-[n])'. In case anyone missed the earlier emails on this topic, this module contains macros that transform the R6RS `library' and 'import' forms into Guile's native `define-module' and 'use-modules' forms. In concert with the version and binding export patches that were pushed last week, this means that Guile now supports R6RS 7 "Libraries" [1], and can thus share code (unmodified!) with any other conforming Scheme implementation. I consider this version of the code to be tentatively "complete." You can try it out by dropping r6rs-libraries.scm into module/ice-9 and then loading it in the REPL or including it as a dependency of a normal Guile module. I'm very interested in any feedback people might have, particularly when it comes to the name of the module and where it belongs / when it should be loaded (always? Not in the REPL?). If no one objects, I'll add some documentation and push it. As I mentioned to Andy on IRC, I'm working on a first pass at a set of implementations of the R6RS Standard Libraries (minus the work already done by Ludovic et al on bytevectors, etc.), as much as possible as wrappers around Guile's existing functionality. I should have some status on that soon. Regards, Julian [0] - http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-11.html#node_sec_8.1 [1] - http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-10.html#node_chap_7 --0016e6d7e162f72154047bbb4c97 Content-Type: text/x-scheme; charset=US-ASCII; name="r6rs-libraries.scm" Content-Disposition: attachment; filename="r6rs-libraries.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g3q7ywnt0 Ozs7IHI2cnMtbGlicmFyaWVzLnNjbSAtLS0gU3VwcG9ydCBmb3IgUjZSUyBgbGlicmFyeScgYW5k IGBpbXBvcnQnIGZvcm1zCgo7OyAgICAgIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KOzsKOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCjs7IExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo7OyB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCjs7IAo7 OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKOzsgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KOzsgCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKOzsgTGljZW5zZSBhbG9uZyB3 aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo7OyBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BIDAyMTEwLTEzMDEgVVNBCl5MCgooZGVmaW5lLW1vZHVsZSAoaWNlLTkgcjZycy1saWJyYXJp ZXMpCiAgIzp1c2UtbW9kdWxlIChpY2UtOSBvcHRhcmdzKQogICM6dXNlLW1vZHVsZSAoaWNlLTkg cmVnZXgpCiAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAjOnVzZS1tb2R1bGUgKHNyZmkg c3JmaS0yKQogICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTExKQogICM6ZXhwb3J0LXN5bnRheCAo bGlicmFyeSBpbXBvcnQpKQoKKGRlZmluZSAobmFtZS1hbmQtdmVyc2lvbiBsc3QpCiAgKGxldC12 YWx1ZXMgKCgoaGVhZCB0YWlsKSAoc3BsaXQtYXQgbHN0ICgtIChsZW5ndGggbHN0KSAxKSkpKQog ICAgKGlmIChwYWlyPyAoY2FyIHRhaWwpKSAodmFsdWVzIGhlYWQgKGNhciB0YWlsKSkgKHZhbHVl cyBsc3QgJygpKSkpKQooZGVmaW5lIHNyZmktcmVnZXggKG1ha2UtcmVnZXhwICJeXFw6KFswLTld KykkIikpCgooZGVmaW5lKiAocHJvY2Vzcy1pbXBvcnQgYXJncyAjOm9wdGlvbmFsIGltcG9ydC1t YXApCiAgKGRlZmluZSAoZmxhdHRlbiBpbSkKICAgIChkZWZpbmUgKGxvYWQtbGlicmFyeSBsaWJy YXJ5LXJlZikKICAgICAgKGRlZmluZSAodHJhbnNmb3JtLWxpYnJhcnktbmFtZSBuYW1lKQoJKGRl ZmluZSAobWFrZS1zcmZpIG0pCgkgIChjb25zICdzcmZpIChsaXN0IChzdHJpbmctPnN5bWJvbCAK CQkJICAgICAoc3RyaW5nLWFwcGVuZCAic3JmaS0iIChtYXRjaDpzdWJzdHJpbmcgbSAxKSkpKSkp Cgkob3IgKGFuZCAoPj0gKGxlbmd0aCBuYW1lKSAyKQoJCSAoZXE/IChjYXIgbmFtZSkgJ3NyZmkp CgkJIChhbmQ9PiAocmVnZXhwLWV4ZWMgc3JmaS1yZWdleCAoc3ltYm9sLT5zdHJpbmcgKGNhZHIg bmFtZSkpKQoJCQltYWtlLXNyZmkpKQoJICAgIG5hbWUpKQogICAgICAobGV0LXZhbHVlcyAoKChu YW1lIHZlcnNpb24pIChuYW1lLWFuZC12ZXJzaW9uIGxpYnJhcnktcmVmKSkpCiAgICAgICAgKHJl c29sdmUtaW50ZXJmYWNlICh0cmFuc2Zvcm0tbGlicmFyeS1uYW1lIG5hbWUpICM6dmVyc2lvbiB2 ZXJzaW9uKSkpCiAgICAoZGVmaW5lIChleGVxPyB4IHkpIChpZiAobGlzdD8geSkgKGVxPyB4IChj YWRyIHkpKSAoZXE/IHggeSkpKQogICAgKGlmIChvciAobm90IChsaXN0PyBpbSkpKSAoZXJyb3Ip KQogICAgKGxldCogKChvcCAoY2FyIGltKSkKCSAgIChsIChjYXNlIG9wIAoJCSgob25seSBleGNl cHQgcHJlZml4IHJlbmFtZSkgKGZsYXR0ZW4gKGNhZHIgaW0pKSkKCQkoKGxpYnJhcnkpIChsb2Fk LWxpYnJhcnkgKGNhZHIgaW0pKSkKCQkoZWxzZSAobG9hZC1saWJyYXJ5IGltKSkpKSkKICAgICAg KGNhc2Ugb3AKCSgobGlicmFyeSkgKGNvbnMgbCAobW9kdWxlLW1hcCAobGFtYmRhIChzeW0gdmFy KSBzeW0pIGwpKSkKCSgob25seSkgKGNvbnMgKGNhciBsKSAobHNldC1pbnRlcnNlY3Rpb24gZXhl cT8gKGNkciBsKSAoY2RkciBpbSkpKSkKCSgoZXhjZXB0KSAoY29ucyAoY2FyIGwpIChsc2V0LWRp ZmZlcmVuY2UgZXhlcT8gKGNkciBsKSAoY2RkciBpbSkpKSkKCSgocHJlZml4KSAobGV0ICgocCAo c3ltYm9sLXByZWZpeC1wcm9jIChjYWRkciBpbSkpKSkKCQkgICAgKGNvbnMgKGNhciBsKSAobWFw IChsYW1iZGEgKHgpIAoJCQkJCSAoaWYgKGxpc3Q/IHgpIAoJCQkJCSAgICAgKGNvbnMgKGNhciB4 KSAocCAoY2FkciB4KSkpIAoJCQkJCSAgICAgKGNvbnMgeCAocCB4KSkpKQoJCQkJICAgICAgIChj ZHIgbCkpKSkpCgkoKHJlbmFtZSkgKGxldCAoKGYgKGxhbWJkYSAoeSkgCgkJCSAgICAgKGVxPyAo Y2FyIHkpIChpZiAobGlzdD8geCkgKGNhciB4KSB4KSkpKSkKCQkgICAgKGNvbnMgKGNhciBsKSAK CQkJICAobWFwIChsYW1iZGEgKHgpIAoJCQkJIChsZXQgKChyIChmaW5kIGYgKGNkZHIgaW0pKSkp CgkJCQkgICAoaWYgciAoY29ucyAoaWYgKGxpc3Q/IHgpIChjYXIgeCkgeCkgCgkJCQkJICAgICAg IChjYWRyIHgpKSB4KSkpCgkJCSAgICAgICAoY2RyIGwpKSkpKQoJKGVsc2UgKGNvbnMgbCAobW9k dWxlLW1hcCAobGFtYmRhIChzeW0gdmFyKSBzeW0pIGwpKSkpKSkKICAKICAobGV0KiAoKHVud3Jh cHBlZC1pbXBvcnQtc3BlYyAoaWYgKGVxPyAoY2FyIGFyZ3MpICdmb3IpIChjYWRyIGFyZ3MpIGFy Z3MpKQoJIChpbGlzdCAoZmxhdHRlbiB1bndyYXBwZWQtaW1wb3J0LXNwZWMpKQoJIChwdWJsaWMt aW50ZXJmYWNlIChjYXIgaWxpc3QpKSkKICAgIChpZiBpbXBvcnQtbWFwIChmb3ItZWFjaCAobGFt YmRhICh4KSAoaGFzaHEtc2V0ISBpbXBvcnQtbWFwIHggI3QpKQoJCQkgICAgIChtYXAgKGxhbWJk YSAoeCkgKGlmIChwYWlyPyB4KSAoY2RyIHgpIHgpKSAKCQkJCSAgKGNkciBpbGlzdCkpKSkKICAg IChhcHBlbmQgKGxpc3QgKG1vZHVsZS1uYW1lIHB1YmxpYy1pbnRlcmZhY2UpKQoJICAgIChpZiAo bW9kdWxlLXZlcnNpb24gcHVibGljLWludGVyZmFjZSkKCQkobGlzdCAjOnZlcnNpb24gKG1vZHVs ZS12ZXJzaW9uIHB1YmxpYy1pbnRlcmZhY2UpKQoJCShsaXN0KSkKCSAgICAoaWYgKG51bGw/IChj ZHIgaWxpc3QpKSAnKCkgKGxpc3QgIzpzZWxlY3QgKGNkciBpbGlzdCkpKSkpKQoKKGRlZmluZSAo cHJvY2Vzcy1saWJyYXJ5IGFyZ3MpICAKICAoZGVmaW5lIChyZXNvbHZlLWV4cG9ydC1zcGVjIGV4 cG9ydC1zcGVjcyBpbXBvcnRzKQogICAgKGRlZmluZSAoaW1wb3J0ZWQ/IHN5bSkgKGhhc2hxLXJl ZiBpbXBvcnRzIHN5bSkpCiAgICAoZGVmaW5lIChmbGF0dGVuLXJlbmFtZXMgZXhwb3J0LXNwZWMp CiAgICAgIChpZiAobGlzdD8gZXhwb3J0LXNwZWMpCgkgIChtYXAgKGxhbWJkYSAoeCkgKGNvbnMg KGNhciB4KSAoY2FkciB4KSkpIChjZHIgZXhwb3J0LXNwZWMpKQoJICAobGlzdCBleHBvcnQtc3Bl YykpKQogICAgKHBhcnRpdGlvbiBpbXBvcnRlZD8gKGFwcGx5IGFwcGVuZCAobWFwIGZsYXR0ZW4t cmVuYW1lcyBleHBvcnQtc3BlY3MpKSkpCiAgKGxldCAoKGltcG9ydC1tYXAgKG1ha2UtaGFzaC10 YWJsZSkpKQogICAgKGxldC12YWx1ZXMKICAgICAoKChsaWJyYXJ5LW5hbWUgdmVyc2lvbikgKG5h bWUtYW5kLXZlcnNpb24gKGNhciBhcmdzKSkpCiAgICAgICgoaW1wb3J0cykgCiAgICAgICAoYXBw bHkgYXBwZW5kIChtYXAgKGxhbWJkYSAoeCkgCgkJCSAgICAobGlzdCAjOnVzZS1tb2R1bGUgKHBy b2Nlc3MtaW1wb3J0IHggaW1wb3J0LW1hcCkpKQoJCQkgIChjZGFkZHIgYXJncykpKSkKICAgICAg KChyZS1leHBvcnRzIGV4cG9ydHMpIChyZXNvbHZlLWV4cG9ydC1zcGVjIChjZGFkciBhcmdzKSBp bXBvcnQtbWFwKSkpCiAgICAgYChkZWZpbmUtbW9kdWxlICxsaWJyYXJ5LW5hbWUKICAgICAgICAs QChpZiAobnVsbD8gdmVyc2lvbikgJygpIChjb25zICM6dmVyc2lvbiB2ZXJzaW9uKSkKCSxAaW1w b3J0cwoJLEAoaWYgKG51bGw/IGV4cG9ydHMpICcoKSAobGlzdCAjOmV4cG9ydCBleHBvcnRzKSkJ CQoJLEAoaWYgKG51bGw/IHJlLWV4cG9ydHMpICcoKSAobGlzdCAjOnJlLWV4cG9ydCByZS1leHBv cnRzKSkpKSkpCgooZGVmbWFjcm8gbGlicmFyeSBhcmdzCiAgKGxldCAoKHRyYW5zZm9ybWVkLWFy Z3MgKHByb2Nlc3MtbGlicmFyeSBhcmdzKSkpCiAgICBgKGJlZ2luCiAgICAgICAsdHJhbnNmb3Jt ZWQtYXJncwogICAgICAgLEAoY2RkZHIgYXJncykpKSkKCihkZWZtYWNybyBpbXBvcnQgYXJncwog IChsZXQgKCh0cmFuc2Zvcm1lZC1hcmdzIChtYXAgcHJvY2Vzcy1pbXBvcnQgYXJncykpKQogICAg YCh1c2UtbW9kdWxlcyAsQHRyYW5zZm9ybWVkLWFyZ3MpKSkKCjs7OyByNnJzLWxpYnJhcmllcy5z Y20gZW5kcyBoZXJlCg== --0016e6d7e162f72154047bbb4c97--