You know, I've written a lot of Scheme library code recently, and very little of it relies on continuations (except for the occasional escape), tail calls (except the implicit use in 'let loop'), or macros.  Much of it could just as well be written in JavaScript or Python.  For me, Scheme is pretty much just an alternative syntax (that I prefer) for modern reasonably-functional languages.

On Wed, Jul 31, 2019 at 4:55 PM Lassi Kortela <xxxxxx@lassi.io> wrote:
>>> Would it be worth specifying a version of Scheme without tail calls and
>>> continuations (I know..) that maps easily to JavaScript?
>>
>> A possible place to start is <https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/BottomScheme.md>, which is only a spec at present (you can ignore the implementation section).  You could add things to it.
>
> A subset of Scheme that does not have at least delimited continuation
> is a step backward as it would require the developer to rely on
> callback-based code.

Humans would not actually write source code in this language. It would
just be a "normal form" emitted by classical Scheme compilers. Similar
to how some C compilers like LLVM convert code to a single-assignment
form for convenience. It gives compilers a common target to aim for.

Compilers would do the difficult work of translating tail calls to this
form, but if a common intermediate representation is found, it would be
possible to easily write common tools to handle it (stuff like
converting from Scheme syntax to JS syntax, bundling many scripts to one
like webpack or rollup, dependency tracking and bundling, etc.)