A package is more than a library collection. It would include test code. It would include meta-information. It could even include executable scripts that are used to actually generate the libraries on the target system. In general, it doesn't make sense just to grab some subtree of the library collection.

The distinction is further complicated by the fact that a featureful Scheme implementation like Gambit doubles as a package manager. So a package manager can be:

1) built into the Scheme implementation
2) external program specific to particular Scheme implementation
3) a third-party package manager supporting more than one implementation

Fortunately our main concern is interfaces, not implementations. If we deliver a spec that works for all of these cases, it doesn't matter.

Earlier I first claimed that "package = library collection" and then that "package = authority about where and how to find libraries". These are conflicting definitions in both theory and practice. Sorry!

It seems that all of these concepts are useful:

1) library [i.e. some Scheme code]
2) library with metadata
3) collection of libraries [possibly all have the same metadata]
4) authoritative info on where and how to get collection of libraries

But it's not clear to me how they should be divided technically.

There could be a simple tool converting a single library into such a package.

True. It could also be implicit. Not clear on this yet.

I didn't mean that rewriting shouldn't be used but that the default mapping isn't that useful IMO.

I'd leave it to implementations and their user communities to figure out a good default mapping for each; I assume there's a lot of variety in what works well.

E.g. Kawa should probably have defaults that make sense in a JVM context.

    - The .scm vs .import.scm vs .sls vs .sld ... file extension wars.

    - The %-encoding of filenames for R6RS libraries.

    - The R6RS numbers-in-library-names thing.

    - Case folding in filenames.

    - Reading Scheme libraries from zip/tar files.

    - Reading files from URLs vs local computer.

    - Reading from git and directories.


I would call this "compiling" and not "rewriting" because it may involve even more.

The rewrite language could be Turing-complete and imperative, but I would strongly prefer a non-Turing-complete and declarative one.

Reply via email to