>In R7RS non-negative integers can be library name parts. Since these 
library names look natural, it would be good to backport this to R6RS 
implementations.

Then (library [...] (import (srfi 1)) [...]) would work, and since ‘library’ is 
(R6RS) standard and reasonably portable it would then appear that (srfi 1) is 
(R6RS) standard and portable, whereas it isn’t R6RS, and hence not a good idea 
to backport.

>The colon causes endless grief when mapping library names to file names. 
>For example, look at all the %3a in 
https://github.com/arcfide/chez-srfi. That's not even the worst of it.

I don’t think this is a problem for Guile? I don’t recall to what extent, but 
(srfi ...) modules are somewhat special-cased in Guile (or maybe it was 
integers in general for define-library) – maybe its implementation of 
define-library translates (srfi 1) to (srfi srfi-1) (I don’t recall the 
specifics). Hence, the file can simply be named “srfi/srfi-1.scm”.

For compatibility, both(**) (srfi srfi-N) (← non-standard Guile thingie) and 
(srfi :N) need to be supported anyway for ‘define-module’ (← Guile-specific 
interface), so which of them determines the file name is just a matter of 
convenience.

Also, AFAIK that %3a encoding isn’t necessary (and neither recognised(^)) in 
Guile – I don’t think Guile does any percent encoding(*). I think naming the 
file “srfi/:1.scm” would work fine, although it’s not something I’ve tried 
before. (There might be a problem with Makefile if ‘make’ doesn’t like the :, 
but I have some ideas for simple ways around that.)

(*) implication: you can’t have two different modules (foo/bar) and (foo bar) 
in Guile.
(^) (srfi %3a1) would mean the module has literally (srfi %3a1) as name.
(**) not entirely true, only supporting (srfi srfi-N) (in define-module) would 
be compatible, but that does not seem to be the future.

Best regards,
Maxime Devos

Reply via email to