Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

As of 2016, is there a Scheme implementation which supports 100% of R7RS (small) with no deviations?

Tags:

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.

like image 686
addictedtohaskell Avatar asked Feb 03 '16 00:02

addictedtohaskell


2 Answers

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
like image 96
Doug Currie Avatar answered Oct 24 '22 15:10

Doug Currie


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.

like image 37
boskom Avatar answered Oct 24 '22 16:10

boskom