Scheme is a dialect of Lisp. It is a lexically scoped, block structured functional programming language. Scheme programs and Scheme data share a common notation, which allows you to treat program as data and data as programs.
I’ve decided to learn a bit of Scheme, to improve my functional programming skills. Having predominantly used languages from the curly braces school before, it’s a refreshing change.
I’m working though the lecture notes and problems from a course by Eugene Wallingford called Programming Languages and Paradigms which uses Scheme. I don’t get any credit for the course, but that doesn’t really matter.
I’ve also got a couple of books. The Scheme Programming Language is the standard introduction to the language, which is also available online. And The Little Schemer which is really a book about recursion, using Scheme to illustrate the idea. The Scheme language spec R5RS is also required reading for the course.