24
votes

I am willing to learn Scheme. I want to stick to R7RS since it's the last standard. However, it seems that there is a lot of fragmentation on the Scheme current implementations, and most of them staying at R5RS or part of R6RS.

The only one I have found supports part of R7RS is Kawa, but as it runs on JVM, it doesn't support tail call optimization, and that is a strong point against that implementation.

Is the Scheme world really that fragmented that there is not even an R7RS full implementation yet? I am asking, because if there is not, as soon as I catch up, I am planning on building one; but, if there exists one, it would be better not to reinvent the wheel and contribute to that certain implementation.

Please, if you have information, I would appreciate not only answering with names, but also with proper further information (official website of the implementation or even a extract from a mailing group would be useful as a reference).

And by the way, I am not considering Racket, as it's not really Scheme anymore.

2
This is a well phrased, specific, well-written, and answerable question. However: "Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam." Answers to this question will become outdated with time (even though you added "As of 2016" to the question) and stale. It's not a good fit for "canonical" knowledge. - Joshua Taylor
In what way is Racket not scheme anymore? Serious question. - kristianp
@Flux First, English is a language with a wider adoption than Japanese. Second, that question was made during 2015, I limited mine to 2016. - addictedtohaskell
@kristianp sorry for the delay. Scheme is a language that inspired Racket but it later evolved to its own programming language which, although gets inspiration from Lisps such as Scheme, no longer can be considered even a dialect of it. Racket nowadays is a language so rich and huge you can use subsets/collections of the language in a way to comply with different programming languages standards. For example, you can use sicp and sicp-pict to comply with the MIT Scheme used in the book Structure and Interpretation of Computer Programs. - addictedtohaskell

2 Answers

24
votes

The Chairman of R7RS Small Language ("Working Group 1") committee, Alex Shinn, created Chibi Scheme as the standard evolved. I believe it is fully compliant. It is a bytecode compiler.

Larceny has a mostly (totally?) compliant R7RS mode, and compiles to machine code.

I have been playing with Picrin which aims for R7RS compliance, and is very very close. It is a bytecode compiler.

A list of implementations that are aiming for R7RS compliance at the committee's wiki include:

  • Chibi
  • Chicken (partial)
  • Foment
  • Gauche
  • Guile (partial)
  • Husk
  • Kawa
  • Larceny
  • Mosh (partial)
  • Picrin
  • Sagittarius
7
votes

Although the question explicitly excludes Racket from consideration as not being Scheme I will point to Racket package "R7RS" which implements R7Rs small.

There are some small incompatibilities documented on project's page.