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: How to classify Scheme implementations on Scheme.org Marc Feeley 15 Feb 2021 22:31 UTC

> On Feb 15, 2021, at 5:11 PM, Lassi Kortela <xxxxxx@lassi.io> wrote:
>
>> Although I have strong opinions about the proper use of terms such as “Scheme” and “R7RS”, you should only view my comments as my personnal position on the matter.  I don’t claim to represent the whole Scheme community nor am I the administrator of the site.  So please read the following with that in mind.
>
> Since you are one of the most experienced schemers, your opinion rightly carries more weight than ours. We appreciate that you are involved in these discussions and that you check our work against howlers. We are inexperienced and will certainly get something wrong once in a while.
>
> Proper tail calls + continuations + syntax-rules does seem like a good baseline benchmark. Syntax-rules is the simplest and most standard implementation of hygienic macros, another feature almost unique to Scheme.

My bar is a little lower and I’m content to call it a “Scheme” if it has Lisp syntax, lexical scoping, tail calls, first class continuations and any macro definition facility including “define-macro”.  This is because when Scheme was in its infancy there was no mention of a macro facility.  So if a system without macros could be called a “Scheme” back then, I find it hard to strip it of its “Scheme” label now.

It is OK for the “Scheme” label to be a low bar given that we have the “RnRS” labels that are more constraining (for example an R5RS system would need to have syntax-rules, an R6RS system would need to have syntax-case, and a R7RS system would need to have define-library).

>
> Bigloo (targeting C and JVM), Kawa (targeting JVM), and IronScheme (targeting CLR) are prominent implementations generally referred to as Scheme, that may have some trouble with proper tail calls and continuations due to the limitations of the target platforms. If I've understood correctly, it's easier to do just tail recursion for JVM/CLR than to do fully general tail calls.

As far as I can tell (I haven’t checked in a while) both Bigloo and Kawa have compile time flags to request support for tail calls and first class continuations.  There may be some edge cases where this does not work 100% according to the spec.  So one's position on conformity will depend on whether they lean towards being a mathematician or an engineer.  This is why I was mentionning the possibility of a feature grid with 3 possible values:

  1) proper tail-calls are not supported
  2) proper tail-calls work in many common situations but not all (mathematician views this as #1, engineer as #3)
  3) proper tail-calls are fully supported

So I would be OK with a system that would achieve level 2 of conformity even if level 3 would be best.  Unfortunately the difference between level 1 and level 2 may be subjective.

Marc