Hacker News new | ask | show | jobs
by ansible 1033 days ago
What's the overall Scheme community look like these days? How much are new libraries targeting the specifications (like R6RS) vs. just targeting a specific implementation like Racket, Guile or Chicken Scheme?

What forces are keeping the various implementations aligned and moving in the same direction? What is driving them apart? What does the future look like?

2 comments

I'm just watching this as an observer, but I suspect a lot of it is:

People who want to write real-world Scheme code have a strong incentive for a single definition of the language so that their code will reliably run on multiple implementations. They want one language and are probably willing to deal with some breakage in places where implementations are alreaday incompatible in order to get there.

People who maintain Scheme implementations want backwards compatibility so that they aren't forced to rewrite a bunch of already working implementation code or try to support multiple different languages at the same time. They don't want to make breaking changes to their implementations and break all of their users in order to converge towards some other implementations' behavior they may not care about.

Teachers want a language that is maximally elegant and minimal. They are perfectly happy to make tweaks to the language to make it incrementally cleaner even if it breaks tons of existing code because most of their code is short-lived anyway.

Reconciling these very different incentives does not sound fun.

Like herding wild, feral and domestic cats - all at the same time.

https://en.m.wikipedia.org/wiki/Cat_Herders

Very well said. A fourth group is people maintaining existing user code (including libraries), who also want backward compatibility.
I am usually only targeting guile, mostly because of guix. Guile or chicken seems to be the most popular schemes, but Chez is a compelling choice when there are no external dependencies.
Racket is far and away the most popular Scheme (and I reject the claim that it is not Scheme).
Hi John! I have always made the claim that racket (minus the #lang bit) is the natural continuation of r6rs. Delimited continuations, immutable pairs, continuation marks and such. They also chose, in my opinion, some more sane paths with regards to the dynamic environment and laziness.

If one could make a wish list it would be the suggestions in Marc's proposal in the chez issue tracker, immutable pairs, immutable strings, and RRB trees in the standard library. Like an opinionated love child racket and Clojure :)

Even though I am more.of an r6rs guy I have always applauded r7rs large. At the same time I am glad you put your own health first. That is always the most important. Apart from the r7rs process, your contributions to all SRFIs I have been following has been amazing.

Take care.