unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Julian Graham <joolean@gmail.com>
To: guile-devel <guile-devel@gnu.org>
Subject: Re: r6rs libraries
Date: Mon, 16 Feb 2009 13:35:40 -0500	[thread overview]
Message-ID: <2bc5f8210902161035p1f2e9125p58c2ad6c4def28fb@mail.gmail.com> (raw)
In-Reply-To: <2bc5f8210901280926o399f4505nc1d30c6017886a81@mail.gmail.com>

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




  reply	other threads:[~2009-02-16 18:35 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <2bc5f8210812271705h3f57cb29w5bb83cb02abe971@mail.gmail.com>
     [not found] ` <m3k59ktv2g.fsf@pobox.com>
     [not found]   ` <2bc5f8210812282238p1f91f352id7eca5280dc9ff6a@mail.gmail.com>
     [not found]     ` <2bc5f8210901012010g2ebb6effx5c966d0e26fe382b@mail.gmail.com>
     [not found]       ` <8763kt48zi.fsf@gnu.org>
     [not found]         ` <m3iqosrcn7.fsf@pobox.com>
     [not found]           ` <2bc5f8210901111521i1a5ec85em65ee20135cc55ebb@mail.gmail.com>
     [not found]             ` <877i4z89jy.fsf@gnu.org>
2009-01-26  0:27               ` r6rs libraries Julian Graham
2009-01-27 10:51                 ` Andy Wingo
2009-01-27 20:09                   ` Ludovic Courtès
2009-01-28 17:26                   ` Julian Graham
2009-02-16 18:35                     ` Julian Graham [this message]
2009-02-16 20:58                       ` Andreas Rottmann
2009-02-18  6:08                         ` Julian Graham
2009-02-18 14:27                           ` Andreas Rottmann
2009-02-17 21:43                       ` Ludovic Courtès
2009-02-18  5:37                         ` Julian Graham
2009-02-18  8:53                           ` Ludovic Courtès
2009-02-18 21:16                             ` Andy Wingo
2009-03-04  5:23                       ` Julian Graham
2009-03-04  8:39                         ` Ludovic Courtès
2009-03-04 22:51                           ` Julian Graham
2009-03-06 23:39                             ` Ludovic Courtès
2009-03-07  0:43                               ` Julian Graham
2009-03-22 22:30                                 ` Julian Graham
2007-02-06 15:55 R6RS Libraries Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2bc5f8210902161035p1f2e9125p58c2ad6c4def28fb@mail.gmail.com \
    --to=joolean@gmail.com \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).