It would be on the level of syntax objects.  Have you implemented a
library loader that deal with all this and local imports in macro
expansion contexts in working fashion?  We have to be careful about
claims that this is just a simple source code mapping.  (I am not
talking about the mapping between library names and files, which is,
in fact, part of the loader.)

I recall you said at least one library name part has to be a symbol.

So these would all work:

(import (foo))
(import (foo 1))
(import (foo 1 2))
(import (1 foo 2))
(import (1 2 foo))

These would work too:

(import (|1|))
(import (|1| 2))
(import (1 |2|))

But these would not:

(import ())
(import (1))
(import (1 2))

If the above is correct, then the loader wouldn't even need a code walker. Users would just need to avoid library names with only numbers. (And even all-numerical names could be used with |123| symbol notation.

Both are just mappings from numbers to symbols.  The latter has the
advantage that it is already "standardized" in SRFI 97.  There's no
need to invent a new convention here that does not have any advantage
(except for highly subjective claims of aesthetics).

Using a plain number like 123 is not a new convention. R7RS has done it for years. Whether the object is a number, a symbol, or a string is a concern on a different level. The file system mapping turns all library name parts into strings anyway.

I don't buy these "subjectivity" arguments, but that's a book-length debate at worst.

Reply via email to