UP | HOME

Scheme

My recent adventures with Scheme (as of 2021) are a perfect example of the project rabbit-hole problem.

I had a project (a simple online store) which I could in theory have implemented in any programming language. I thought ‘why not try R7RS Scheme?’ Then I started building up a list of the things I’d need to implement myself in order to do that:

That led down further rabbit holes, some of them caught up in dependency chains with things coming in R7RS that haven’t been completed yet:

For a 50 year old programming language, Scheme’s library support is still rather poor. (Actually it isn’t — there are libraries in lots of individual Scheme implementations which do quite a lot of what I want here. But they’re not portable, and no Scheme has a complete selection of the libraries I’d like to use. SWAG is a complete innovation in the Scheme world, as far as I know.)

The following directed graph (where every node is something I’d either have to write, or (in a few cases like the macro system) simply isn’t standardized yet, and the → link means ‘depends on’) shows how ridiculous the situation is:

scheme-project-deps.png