https://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-...
> And that undermines the innovation and superiority of syntactic macros introduced by Lisp.
They have a different purpose and operate on a different level.
> respect the existing reader semantics
This is an example of xapping data structure in *Lisp for for the Connection Machine
{moe->"Oh, a wise guy, eh?" larry->"Hey, what's the idea?" curly->"Nyuk, nyuk, nyuk!"}
> If only they'd still make those, and had improved its performance
Nowadays it might be easier to use an emulator running the OS.
Sorry, maybe I'm not seeing it, but what part of that link describe lexical user definable reader macros in scheme?
> {moe->"Oh, a wise guy, eh?" larry->"Hey, what's the idea?" curly->"Nyuk, nyuk, nyuk!"}
Right, so in Clojure you could extend the reader and do:
#xapping{moe "Oh, a wise guy, eh?" larry "Hey, what's the idea?" curly "Nyuk, nyuk, nyuk!"}
As a data literal for xapping data structures.
Could you link to the RnRS in question? I'm curious.
> Not really. One just reads things from a stream and returns an s-expression.
I feel like if I agree to this, I also agree that pre-processors are easy to write and use. And that undermines the innovation and superiority of syntactic macros introduced by Lisp.
> The main purpose of user-written reader macros is to extend S-expressions to support literal syntax of new user-defined data types.
This is possible in Clojure as well. You can extend the language with new data literals. But they must begin with # + char(s) and respect the existing reader semantics, as they are processed as a syntactic macro, and not a lexical one. So you could add #queue[1 2 3] for example. But you couldn't add |1 2 3|
> On my Lisp Machine it was actually useful.
If only they'd still make those, and had improved its performance.