Why S7 Scheme? (2020)
iainctduncan.github.io
iainctduncan.github.io
The first is that it seemed at the time that Scheme was going to be easier to work with, and that has proven true. It's a lot easier to do music theory hacking and integrate with Max using a lisp 1. Being able to seamlessly change whatever the first form is (function, hash-table, list, vector) with no change to the code has turned out to be really really nice in my work.
The second was that when I started I knew little about Schemes and Lisps and it seemed when going through the docs like ECL at that time was going to be a bigger lift to get going.
Now... there's also the wonderful Fennel possibility which distracts me when I'm bikeshedding. ;-)
As a CHICKEN maintainer, I'd love to hear what the author was missing in the FFI part of the manual.
We also used Guile during the desktop-based development process for sometimes better debugging and to enforce greater R7RS code-compatibility. (Ah, and the subtle bugs of alternative function parameter evaluation order!)
We later moved to Fennel(-lang) based on Lua as it was a slightly better fit for our team in various ways, but the S7 experience, including the community, was fantastic!
Both solutions proved stable with tens of thousands of monthly active players.
The single C file convenience really is helpful. When I was figuring out the byzantine build process for incorporating s7 into a mixed JS, C, Scheme app, it was great to not have any additional foot guns there. On my eventual todo list is porting some of the same work to incorporate into JUCE apps for mobile, so good to know that worked for you.
Fennel is another language I have been watching, good to hear that worked out well.
Happy to answer other questions.
For people interested, I will update that page today with thoughts five years on.
TLDR: still really happy with the choice!
https://ccrma-mail.stanford.edu/mailman/listinfo/cmdist
In my context, I have rigged up a REPL in Max, so I wind up using that instead. (Which is freaking awesome, because I can script all of Max from my vim buffers.)
For the emacs side I used cmuscheme which is basically comint. Of course you don't get the same experience as in common lisp, but I found S7 to be pleasant to work with also in regards to reporting errors etc