Fair anything. Thanks for your reply. So what in your opinion are the must to name implementation R7RS compatible? With LIPS most of R7RS features are just standard library. Example is: # for vectors and #u8 for byte vectors. Which I think it's really cool that you can define your own syntax like that (I plan to create SRFI for this). I think that in core Scheme is lisp that use S-Expressions that have lexical scoping and few core forms like define/lambda/if/let plus some functions. For me to be scheme I don't even need macros. I can have let/define/if and similar construct that allow me to write at least everything that is in SICP. So I think that some kind of macros are required unless delay is implemented as core construct. To be called Scheme you don't need much. As for Spec I think that most important are new syntax, example: #! !# |foo bar| or #; that are in the spec that you can't implement as standard library. They need to be embedded into a parser to work. Unless you implement Common Lisp reader macros, in that case you can implement them as standard library (except the comment that need to be ignored by the parser). Also construct that change default, environment based, lexical scoping are important, since they can't be easy implemented using libraries. I think that I did implement everything that need to be in R7RS in term of syntax (besides already mentioned call/cc and TCO, there is also parameterize expression that from what I understand create dynamic scope, it will not be easy to add to my implementation). I may don't have define-library but as for JavaScript implementation to be used mostly in browser you can only have limited solution of resolving and finding files. So I think that define-library can be implemented as pure macro (I have one similar implementation before I've found that there is standard one, but define-library and import is little more complex). One major missing in LIPS are continuations and TCO that need to be in core, but you can write in description that those are missing. Do you think that LIPS and BiwaScheme should not be included as Scheme implementation, or just that they should not be marked as RnRS compliant? If the second then how you say that the implementation have partial support? Recently I've implemented all functions from R5RS in 1.0 Beta (except call-with-current-continuation) can my implemented be then R5RS compatible? Or do I need to implemented that one missing function and add TCO to be able to use the mark and call it Scheme? Note that I can write in description that those are missing. Note that there are lot implementations of Scheme, most of that are less known, probably don't support fully any RnRS spec, except maybe R3RS (not sure what is included there). Best Jakub On Fri, 12 Feb 2021 09:54:53 -0500 Marc Feeley <xxxxxx@iro.umontreal.ca> wrote: > 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 > > > > -- Jakub T. Jankiewicz, Web Developer https://jcubic.pl/me