JavaScript interpreters Jakub T. Jankiewicz (12 Feb 2021 08:25 UTC)
Re: JavaScript interpreters Marc Feeley (12 Feb 2021 12:31 UTC)
Re: JavaScript interpreters Jakub T. Jankiewicz (12 Feb 2021 14:07 UTC)
Re: JavaScript interpreters Marc Feeley (12 Feb 2021 14:54 UTC)
Re: JavaScript interpreters Jakub T. Jankiewicz (12 Feb 2021 17:38 UTC)
How to classify Scheme implementations on Scheme.org Lassi Kortela (14 Feb 2021 07:52 UTC)
Re: How to classify Scheme implementations on Scheme.org Jakub T. Jankiewicz (14 Feb 2021 09:12 UTC)
Re: How to classify Scheme implementations on Scheme.org Lassi Kortela (14 Feb 2021 09:34 UTC)
Re: How to classify Scheme implementations on Scheme.org Marc Feeley (14 Feb 2021 12:54 UTC)
Re: How to classify Scheme implementations on Scheme.org Arthur A. Gleckler (14 Feb 2021 15:45 UTC)
Re: How to classify Scheme implementations on Scheme.org Jakub T. Jankiewicz (14 Feb 2021 16:23 UTC)
Re: How to classify Scheme implementations on Scheme.org Marc Feeley (14 Feb 2021 17:13 UTC)
Re: How to classify Scheme implementations on Scheme.org Lassi Kortela (15 Feb 2021 22:11 UTC)
Re: How to classify Scheme implementations on Scheme.org Lassi Kortela (15 Feb 2021 22:22 UTC)
Re: How to classify Scheme implementations on Scheme.org Marc Feeley (15 Feb 2021 22:36 UTC)
Re: How to classify Scheme implementations on Scheme.org Lassi Kortela (15 Feb 2021 22:40 UTC)
Re: How to classify Scheme implementations on Scheme.org Marc Feeley (15 Feb 2021 22:31 UTC)

Re: JavaScript interpreters Marc Feeley 12 Feb 2021 14:54 UTC

You are correct that there is no implementation of Scheme that is 100% conformant to R7RS (as far as I know).  Similarly, there are no C compilers that conform 100% to any of the C specs due to bugs in the compilers (a notable exception is CompCert).  The situation is no different for compilers for other languages.

The usage of the term R7RS (or R5RS, R6RS, …) has value when it conveys the set of features a user can depend upon.  It is common practice by users to consider a small number of minor deviations from the spec to be acceptable, particularly when they are considered implementation bugs.  Users that don’t care about R7RS will not benefit from the label “R7RS” on an implementation, but users that do care about that standard will be upset when they discover that many features are not supported on an implementation that is labeled “R7RS”.  So I think it is important to use these labels appropriately.  After all that is why standards are created.

My question of “how you define conformance to R7RS” is not rhetorical.  I want to understand your point of view.

What is Scheme?

Marc

P.S. Full disclosure: I am a member of the Scheme language steering committee, so you will understand that I am interested in proper usage of the RnRS names.

> On Feb 12, 2021, at 9:07 AM, Jakub T. Jankiewicz <xxxxxx@onet.pl> wrote:
>
> It have partial support, that's why I didn't said it have full RnRS support.
>
> In LIPS I'm going to add the rest of the R7RS in version 1.0, without tail
> calls and continuations, that I'm going to add maybe in version 1.1.
>
> BiwaScheme is used in repl.it and it's pretty known Scheme implementation
> even if it don't have full R7RS support (the website mention R6RS and R7RS).
>
> If you want you don't need to write word R7RS if you think that it don't
> deserve it. You can write R5RS if you prefer, but continuations are required
> by the standard so you will also not be able to say that those implementation
> have even R5RS support.
>
> If you would say that only 100% of the spec can have name of the spec then
> you could not call LIPS Scheme.
>
> Are all implementations from implementations.scheme.org have everything
> required by the standard?
>
> You can write any RnRS spec that is fully suported, in case if LIPS there
> would probably none because of tail calls.
>
> Regards
> Jakub
>
> On Fri, 12 Feb 2021 07:31:09 -0500
> Marc Feeley <xxxxxx@iro.umontreal.ca> wrote:
>
>>> On Feb 12, 2021, at 3:25 AM, Jakub T. Jankiewicz <xxxxxx@onet.pl> wrote:
>>>
>>> His implementation is R6RS R7RS and it's bytecode interpreter, but in
>>> JavaScript.
>>>
>>> Mine is R5RS R7RS tree walking interpreter also in JavaScript.
>>
>> The last time I checked Biwascheme was missing quite a few R7RS features
>> (define-library, import, define-syntax, exception handling, bytevectors,
>> mutable strings, advanced I/O, etc).  Similarly lips is lacking proper tail
>> calls, continuations, define-library, import, etc.
>>
>> So can I ask you how you define conformance to R7RS?
>>
>> Marc
>>
>>
>
> --
> Jakub T. Jankiewicz, Web Developer
> https://jcubic.pl/me
>