2016-02-03 3 views
11

Ich bin bereit, Scheme zu lernen. Ich möchte bei R7RS bleiben, da es der letzte Standard ist. Es scheint jedoch, dass die aktuellen Implementierungen von Scheme sehr fragmentiert sind und die meisten von ihnen bei R5RS oder einem Teil von R6RS bleiben.Gibt es seit 2016 eine Scheme-Implementierung, die 100% von R7RS (klein) ohne Abweichungen unterstützt?

Die einzige, die ich gefunden habe, unterstützt Teil von R7RS ist Kawa, aber wie es auf JVM läuft, unterstützt es keine Tail-Call-Optimierung, und das ist ein starker Punkt gegen diese Implementierung.

Ist die Systemwelt wirklich so fragmentiert, dass es noch nicht einmal eine vollständige R7RS-Implementierung gibt? Ich frage, denn wenn nicht, sobald ich aufhöre, plane ich einen zu bauen; aber wenn es einen gibt, wäre es besser, das Rad nicht neu zu erfinden und zu dieser bestimmten Implementierung beizutragen.

Bitte, wenn Sie Informationen haben, würde ich mich freuen, nicht nur mit Namen, sondern auch mit geeigneten weiteren Informationen zu antworten (offizielle Website der Umsetzung oder sogar ein Auszug aus einer Mailing-Gruppe wäre als Referenz nützlich).

Und nebenbei denke ich nicht an Racket, da es nicht mehr wirklich Schema ist.

+0

Dies ist eine gut formulierte, spezifische, gut geschriebene und beantwortbare Frage. Allerdings: "** Fragen, die uns bitten, ein Buch, ein Tool, eine Softwarebibliothek, ein Tutorial oder eine andere Offsite-Ressource zu empfehlen oder zu finden, sind für Stack Overflow ** off-topic, da sie dazu neigen, eigensinnige Antworten und Spam zu bekommen." Antworten auf diese Frage werden im Laufe der Zeit veraltet sein (obwohl Sie der Frage "Ab 2016" hinzugefügt haben) und veraltet sind. Es passt nicht gut zu "kanonischem" Wissen. –

+0

In welcher Weise ist Racket kein Schema mehr? Ernste Frage. – kristianp

Antwort

12

Der Vorsitzende der R7RS Small Language ("Working Group 1") Ausschuss, Alex Shinn, erstellt als Standard entwickelt. Ich glaube, es ist vollständig konform. Es ist ein Bytecode-Compiler.

Larceny hat einen größtenteils (vollständig?) Kompatiblen R7RS-Modus und kompiliert zu Maschinencode.

Ich habe mit Picrin gespielt, die für R7RS-Compliance zielt, und ist sehr, sehr nahe. Es ist ein Bytecode-Compiler.

A list of implementations, die für R7RS Compliance in der Ausschuss Wiki streben sind:

  • Chibi
  • Chicken (teilweise)
  • Foment
  • Gauche
  • Guile (teilweise)
  • Hülse
  • Kawa
  • Larceny
  • Mosh (teilweise)
  • Picrin
  • Schütze
+0

Ich habe einige aus der obigen Liste gefunden, aber es gibt viele, die seit 2015 nicht aktualisiert wurden (wie Foment) oder Gauche (2014). Chibi scheint jedoch zu 100% kompatibel zu sein. Ich werde einen Blick darauf werfen und basierend darauf, wählen Sie Ihre Antwort. – addictedtohaskell

+0

In der Tat ist Chibi Scheme vollständig konform mit dem R7RS-Standard. Es hat auch mehrere SRFI implementiert, was es jetzt die beste Option macht, und ich hoffe für eine lange Zeit. – addictedtohaskell

+1

Gauche ist aktiv entwickelt und bereits mit wenigen Ausnahmen R7RS-konform. Nur der Autor (ich) ist zu faul, um Releases zu machen. – shirok

4

Obwohl die Frage ausdrücklich Racket aus der Betrachtung ausschließt nicht Schema sein Ich werde Racket package "R7RS" zeigen die R7Rs kleine implementiert.

Es gibt einige kleine Inkompatibilitäten, die auf der Projektseite dokumentiert sind.

Verwandte Themen