Instead, I see the following two ways to proceed:
(1) Reader extensions are provided through normal Scheme libraries. These can be imported at the beginning of source files through a special syntax to define the reader that is used for the rest. This is the approach Racket uses (where "#lang" is its special syntax).
If you remember, we have two use cases: an entirely separate syntax (for which #lang is appropriate) and incremental extensions to existing syntaxes. The #. proposal is meant for the second case only.
1 2 #.(my-reader "3 4 5") 6 7
This makes editor syntax coloring, paren matching, etc. impossible, since everything would look like a string.
Thanks for the explanation. Could this be fitted to R7RS's rather involved lexical syntax?
See the Chicken library (chicken read-syntax). This is further simplified: it is possible to make any character a macro character, but not to make a macro character into an ordinary character.
John Cowan
http://vrici.lojban.org/~cowan xxxxxx@ccil.orgHenry S. Thompson said, / "Syntactic, structural,
Value constraints we / Express on the fly."
Simon St. Laurent: "Your / Incomprehensible
Abracadabralike / schemas must die!"