Ideas On learning Scheme

What to use?

You need a comfortable interface to Scheme. Learning means trying out, and without a comfortable interface, you won't just try things.

If you already know Emacs, you can use that. Customize the scheme-program-name variable to point to your favorite Scheme implementation (see category-implementations for an overview), and do M-x run-scheme. Read the documentation on how to use this effectively -- especially learn how to use C-c C-e to send forms from a scheme buffer directly to the scheme process. Also to help you with using emacs with scheme Quack adds useful scheme related functionality to Emacs.

If you're unfamiliar with Emacs, familiarize yourself! It is really the best editing environment for Scheme code out there -- yes, even for die-hard vi or vim users; many Schemers who use vi or vim for everything else use Emacs just for Scheme. There's even a vi emulation mode, viper-mode, if you just can't stand Emacs's keybindings & such. A few Schemers prefer DrScheme? of PLT-Scheme, if RAM is copiously available; DrScheme is recommended in general, too, for accompaniment with HtDP, as it has facilities specifically designed for learning with HtDP.

Alternately, you may be most comfortable away from your desk. If you have a Palm PDA, try LispMe; if you have a Pocket PC, try Pocket-Scheme. You can thus experiment with Scheme while waiting in line, riding the subway, sitting in the park, etc.

You can also try LIPS Scheme that provides online Scheme REPL as bookmarklet, that can be used on any website, it even work on pdf files (at least in Chrome).

What to read?

You should really read a book. The best ones out there are HtDP and SICP (both of them available online). Neither one specifically tries to teach Scheme - they both try to teach programming and computer science, and "just" use Scheme to help them in that task. You'll learn much from them and learn Scheme as a side effect.

If you already know other languages, and really don't want to read these books, you can have a look at Teach-Yourself-Scheme and schintro, both of which are shorter online texts that describe scheme well.

You can find more texts on scheme in category-texts.

Where to go?

This wiki provides a category-learning-scheme which lists pages suitable for learners. A good start is scheme-style and then on to recursive-functions. If you are familar with that, you can read about iterative-processes. None of these pages is intended to teach the language itself, but are intended to help with specific steps in the learning process.

If you have questions, the people on #scheme-on-freenode can probably help you.