Lisp – Features of MIT-Scheme That Make It Ideal for SICP

lispschemesicp

I've been thinking about trying to get through the SICP again, this time well-armed with a better idea of what the SICP is meant to accomplish, and being older and wiser than my first attempt back in university. I've been told by old hands that the MIT Scheme is the only scheme I should think about using, and that other schemes lack features that make the SICP harder to accomplish. "There's a reason all the 'SICP-in-X' end with chapter 3. Other languages can't support what's in chapter 4."

When I asked what's in chapter 4, the answer is, "You'll have to get through the first three chapters to understand." Which is very Zen, I admit, but not helpful.

The only things I can think of that older lisps have is dynamic scope and fexprs, but those don't seem to be the issue. What features does MIT Scheme possess that makes it "ideal" for getting through SICP? (Other than that it's the target language of the book, of course.)

Best Answer

I'm not so sure I believe these people. I've gone through SICP and the biggest blocker you'll run into is how call-with-current-continuation (call/cc) is implemented.

While MIT-Scheme is officially endorsed, there are a few downsides to MIT-Scheme

  1. Old
  2. Unmaintained as far as I can tell
  3. Pretty mediocre environment/repl
  4. Not so great errors

On the other hand it is "pure scheme" with relatively few extensions which might be considered nice for a beginner.

Racket provides a pretty swell IDE and Neil Van-Dyke has written a nice package that implements a Scheme precisely tailored for SICP.

It's a more modern and pleasant environment overall, and if you decide to write some more Scheme after SICP like me, Racket en-proper is a darn good Scheme-ish language to be writing.