Am Sa., 1. Mai 2021 um 19:35 Uhr schrieb Adam Nelson <xxxxxx@nels.onl>:

On 5/1/21 12:43 PM, Amirouche Boubekki wrote:

What would be the advantage of moving to R8RS?
Putting the R6 vs R7 split behind us.
I do not understand why R8RS output will solve that problem, that R7RS
can not. Except increment a number.

If I were to design an R8RS, my approach would be to split it into specification and reference code. The specification would be extremely small, smaller even then R7RS-small. Just a library system, macros, basic list and vector operations, and some system interfaces like the filesystem. And the reference code, written entirely in this much smaller Scheme, would implement the rest of the language, including compatibility layers for both R6RS and R7RS.

Implementations would not be obligated to use this reference code, but they must be "bug-for-bug" compatible with it and its test suite. The reference code would be as semantically correct as possible, but not concerned with performance at all; Schemes that care about performance would reimplement it. Writing a "toy" Scheme would still be possible and even easy, and you could get the rest of this hypothetical R8RS's features by just dropping in the reference code.

For this to work, the base language would have to be expressive enough for the complete semantics, which Scheme isn't. For example, the semantics of a higher-order procedure may be that it doesn't need to work in the presence of call/cc while your reference code may happen to be.

Anyway, what would you like to achieve with such a setup?