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