So Ed Lang got curious about all these books I listed the other day, but
waffled about the cost. Aside from GEB, none of the books I listed
are over US$20. Most of them are paperbacks -- slim little volumes.
But if you're genuinely not able to buy any books, but want to learn
scheme, here's what there is on the net.
For starters, there's Teach Yourself Scheme in Fixnum Days. It's a
very practically minded tutorial, and it doesn't hide the OS-interface
features that have side effects. Most texts present lisp as an ethereal
function evaluator, and give you no I/O beyond the REPL (Read, Eval,
Print Loop) itself.
I haven't worked my way through that tutorial, but I'll probably give it
a try sooner or later. It even lists CGI programming examples, which is
kind of a trip. It seems to use mzscheme as the implementation for all
the code examples.
If you're looking more for the no-math no-computers liberal arts
oriented approach that TLS had, you may find How To Design Programs
useful. It's actually the textbook to a course that uses DrScheme,
which is a nice GUI scheme IDE with graphics libraries and other
goodies. The trick to DrScheme is that it initially presents you with
restricted feature sets of the language to keep beginners from getting
too confused. It's really a classroom tool. It's actually
based on mzscheme, if I remember correctly.
If you're a little more hardy, and are looking for an in-depth coverage
of CS, there's always The Structure and Interpretation of Computer
Programs. It's an amazing book! Although it's designed with
portability across scheme implementations in mind, the course designed
around it uses MIT Scheme.
Finally, if you're looking for a big Scheme reference, the canonical
book is The Scheme Programming Language, 2nd Edition.
While not specifically about Scheme (it uses Common Lisp for most of the
examples), the book On LISP has been recommended to me as a good way
to learn how to think about macros. No, not like the goofy
preprocessors that come with 1970s compiled languages, but a truly
dynamic modification of the LISP evaluator! I'll let Paul Graham tell
his own tale about the power of LISP macros.
Most of these are available in HTML format, except for On LISP. I
have them all mirrored locally so I can read them on my zaurus and maybe
print them all out some day. It irritates me that the images most
TEX-to-HTML generators spit out are 1-bit. Why not take advantage of
ghostscript to anti-alias?