At present, there are only a few Schemes that are practical: Chicken, Guile, Chez, and Gambit seem to be the big players, with Cyclone, Chibi, and Bigloo bringing up the rear.
It's also kind of funny that a handful of major, practical implementations is considered a low amount. Number of Python implementations? Between one and three, depending on definition. Number of Javas? 2 or 3 again. Number of Clojure implementations? One. Javascript? Half a dozen at most.
Seems to me like the problem is standardization between these implementations, not overall number.
Not at all.
>It started out as a pure Scheme, then "took a practical turn" as the parent said.
False.
PLT Scheme, like all serious schemes, started out as Scheme extended for practical use.
Racket, what PLT Scheme became, isn't an extended Scheme: it is a different language with its own semantics. That's not good, bad, or pedantic, but it is true.
>You can still make it act like a pure Scheme with a #lang directive.
No, you can make it use RnRS. The difference is that in actual Schemes, the language you write in is extended RnRS, not an entirely different language.
At the end of the day, calling Racket a Scheme is like calling Java a C: they look similar, but they are radically different under the surface.
Ultimately, Scheme is a language family, and Racket is further away than most or all of the other members, but there's considerable distance between Guile and Gambit as well (to pick some other examples).
Full disclosure: I'm a core developer of Racket, but not all of us have the same perspective on this question.
At least three:
- Clojure on the JVM: https://github.com/clojure/clojure
- ClojureScript (JavaScript): https://github.com/clojure/clojurescript
- Clojure on the CLR: https://github.com/clojure/clojure-clr