[gambit-list] Module system ELS20 presentation

Lassi Kortela lassi at lassi.io
Mon Apr 27 12:27:20 EDT 2020


> Assuming/hoping there will at some point be a registry where one can
> download r7rs libraries (maybe there already is? snowfort?), I think it
> can be as simple as suggesting people use their library name as it occurs
> in the registry as a prefix.

Yes, snow-fort.org already has a nice collection of R7RS libraries. It 
doesn't enforce any particular library name conventions.

We should set up something like lib.scheme.org that aggregates 
everything. Scheme.org news coming soon.

Nevertheless, experience with golang shows that arbitrary URI imports 
are still a good idea. There are so many Go packages that they cannot 
hope to gather all of them in one registry, no matter how nice that 
would be.

> This is lightweight, easy to understand and remember, and not as ugly or
> fraught with issues like the URI proposal.

Do you have specific issues in mind with the URIs?

>> I wonder if it's better to recommend that all URLs be enclosed in vertical
>> bars, which is safe and simple as vertical bars are not valid in URLs
>> unless %-escaped, or to specify that only URLs containing characters from
>> "#[]'(),;" be enclosed, which minimizes the use of vertical bars.
> 
> That would be a problem because then you'd need an additional mapping of
> URL to filesystem location for the module.  A colon is not allowed in
> Windows file names, more than one dot might be a problem in some OSes as
> well, and slashes can't occur in file names either.  There's many more
> specifal characters:
> 
> https://en.wikipedia.org/wiki/Filename#Comparison_of_filename_limitations
> 
> So an e-mail address might not work either.

Good call.

I have a generic solution in mind to the filename mapping mess that 
would involve having a special metadata file in the lib directory. That 
file could have instructions about library lookup and compatibility, 
which would then drive a small library name rewriting engine in the 
Scheme implementation. By rewriting, I mean things like "assume all 
library names of the form (srfi-NNN) are aliases to equivalent names of 
the form (srfi NNN), and those can be found at filenames of the form 
srfi/NNN.sld".




More information about the Gambit-list mailing list