This is an introduction to the Scheme programming language. It is intended as a quick-start guide, something a novice can use to get a non-trivial working knowledge of the language, before moving on to more comprehensive and in-depth texts.
The text describes an approach to writing a crisp and utilitarian Scheme. Although we will not cover Scheme from abs to zero?, we will not shy away from those aspects of the language that are difficult, messy, nonstandard, or unusual, but nevertheless useful and usable. Such aspects include call‑with‑current‑continuation, system interface, and dialect diversity. Our discussions will be informed by our focus on problem-solving, not by a quest for metalinguistic insight. I have therefore left out many of the staples of traditional Scheme tutorials. There will be no in-depth pedagogy; no dwelling on the semantic appeal of Scheme; no metacircular interpreters; no discussion of the underlying implementation; and no evangelizing about Scheme’s virtues. This is not to suggest that these things are unimportant. However, they are arguably not immediately relevant to someone seeking a quick introduction.
How quick though? I do not know if one can teach oneself Scheme in 21 days1, although I have heard it said that the rudiments of Scheme should be a matter of an afternoon’s study. The Scheme standard [23] itself, for all its exacting comprehensiveness, is a mere fifty pages long. It may well be that the insight, when it comes, will arrive in its entirety in one afternoon, though there is no telling how many afternoons of mistries must precede it. Until that zen moment, here is my gentle introduction.
This Scheme tutorial is mediocre and out-of-date, but you can do worse. It helped me understand continuations a little better, and gave me a better sense of the language, but the code samples were monstrosities. They were very hard to read. It's unclear if this is a fault of the language, as all the nested let blocks tend to turn things into spaghetti code very quickly. Still, I think the code could definitely have been written better.
I didn't find this very helpful and mostly skimmed the second half. It seems to go very quickly from a general outline of syntax etc, into some extremely specific things like implementing an object system (note: not just using, but implementing from scratch) and some mathematical code that I'll never use.
It's not particularly up to date either so while the general outlines are probably still correct I think a lot of the practicalities (which implementation to use, how best to run scripts) are probably obsolete. I'm unlikely to find myself writing CGI scripts in 2025 either, but nice idea.