On 25/03/2022, Marc Nieper-Wißkirchen <
marc....@gmail.com> wrote:
> I don't see why you shouldn't be able to continue using the same code
> as before. Earlier dialects don't go away just because there's a new
> kid in town. Programs written in R4RS, R5RS, or R6RS haven't become
> obsolete because the newest standard is called R7RS. But even more
> importantly, the large language will be virtually compatible with the
> small language so every implementation of the large language
> implementing the needed SRFIs will be able to run your code written
> for the small language.
That's my point. I was simply answering your earlier question.
I think we're in strong agreement. ;)
>> Perhaps this is a matter of coding style. There are Schemes supporting
>> R5RS, R6RS and R7RS. They also support SRFIs. More SRFIs may be added
>> with a sample implementation. Some Schemes support only one Scheme
>> report and yet can still support many SRFIs.
>
> I'm afraid that I don't see your point here.
It's the same point I've made here several times now, but in reply to
your earlier question.
> While I think it is important to have a detailed language
> specification with definite semantics for those implementations
> willing to support it and for those users wanting a clear, maximal
> portable programming model with no surprises, we will also see many
> implementations that do not implement the detailed specification
> fully. Nevertheless, for a lot of users and for a lot of practical
> purposes, an "almost implementation" can be just enough and will be a
> valuable addition to the Scheme landscape. To give an example of what
> I mean, we have implementations like Chez on the one hand side, that
> strive after implementing R6RS correctly. On the other hand, we have
> implementations like Guile that do not implement R6RS in all details
> but that are nevertheless a usable R6RS platform. A similar thing we
> will see with the large language. While Chibi may not implement all
> syntactic abstraction facilities of the large language faithfully, it
> will probably be able to serve as a good platform for programs for the
> large language in many practical situations.
Indeed, I think we're in agreement here also.
As I've said here before, I have a Scheme compiler of my own, written
in a language that Chibi and Larceny will accept. My compiler itself
will accept a language that supports itself. Beyond that, I'm now very
reluctant to claim any compatibility with R7RS. It might be possible
to claim support for the Small dialect, but probably not the Large
dialect.
Of course, this is still a work in progress - one of the risks of
implementing a language while the definition is growing and changing -
but sometimes that's hard to avoid. I've obvserved similar issues in
other languages. In one case, in 1995, I recall a programmer
commenting that it was "hard to find a book in sync with a compiler in
sync with the language" due to the rapidity of change. (However, see
my comment below regarding 'cleanup'.)
Due to the nature of Scheme, much of the language is defined by the
runtime library. There's also the core/derived distinction.
This may be further complicated by the bluring of run time and compile
time. Most of my concerns here relate to this distinction. I only
mention my own compiler because there are so few well know, widely
available, and easy to use Scheme compilers that make this hard
distinction. (Stalin immediately springs to mind.) I can at least
cautiously claim to support an intersection of syntax of semantics.
Clearly there should be a 'cleanup' stage for my own code once
committee C has completed theirs. ;) Until then, I should closely
follow the progress of WG2 to ensure I understand and appreciate the
issues. I'd like to thank everyone here for their insights so far.
So my concerns in this context regarding define-record-type may be
satisfied by only using the SRFI 9. No procedural layer. No inspection
layer. I get around this by using a layer on top
(define-datatype/cases). Perhaps a procedural layer might make this
easier. I know from experience how much syntax-case can help. I also
know its possible to manage without these features (using Chibi and
Larceny), but perhaps someday I'll find a compliant R7RS system on
which my code breaks.
I don't know how common this experience may be, but perhaps you can
comment. I know there's Scheme code that works with some Scheme
systems but not others. The SRFI 53 sample implementation is one
example. (However, SRFI 53 is now withdrawn.) I've encountered similar
issues myself. Other times, I've found ways around those issues (like
the renaming technique used in, for example, the SRFI 227 sample
implementation). SRFI 148 is also of interest to me.
Thanks again for your insights. I hope this reply answers your
question without raising (too many) more questions.