What is the best Scheme implementation for working through SICP?

32,770

Solution 1

Use MIT Scheme.

It's recommended by the authors of SICP, and is used at MIT for the 6.001: Structure and Interpretation of Computer Programs course.

Solution 2

Use Racket (formerly PLT Scheme).

The DrRacket IDE is an excellent starting point for all things Scheme including SICP.

To look up keywords in the documentation, place the cursor on the keyword and press F1. In DrRacket you can now see the images directly in the REPL (the read-eval-print-loop).

SICP Support for DrRacket, by Neil van Dyke.

Update (2016): The new SICP package is at http://pkgs.racket-lang.org/#[sicp] Download it with the Package Manager (in DrRacket) or use raco. Manual

Update2 (2016): Also if you want to try a new implementation of the SICP picture language, then download sicp-pict2.rkt.


Update3 (2020): The sicp-lang package includes an implementation of the sicp language and the sicp picture language.

Documentation: SICP Support for DrRacket
Source Code: sicp-lang on GitHub
Racket Package: sicp-lang package info

Note: The picture language has more features (such as colors and larger sizes) than the picture language described in the book. The source contains examples: https://github.com/sicp-lang/sicp/blob/master/sicp-pict/main.rkt

Solution 3

MIT/GNU Scheme, just make sure you load the SICP compatibility package (yes, they provide specific libraries to enhance guarantee the SICP exercises work).

Solution 4

This was suprisingly annoying to get done on macOS. Here's how it works as of today, assuming you have Homebrew. (Might want to run brew update once in a while).

brew cask install racket
raco setup  # might be optional
raco pkg install sicp

Now you can (require sicp) or simply run

racket -l sicp --repl

Which you might want to abbreviate to scheme. In bash that'd be

alias scheme='racket -l sicp --repl'

which you can add to your ~/.bashrc

Solution 5

I've just started do SICP this week.

Currently, MIT Scheme is broken in in Ubuntu Linux (9.04 "jaunty"). It might be working in the future.

DrScheme is working, and is working well. You can use soegard's package listed above or Neil Van Dyke's package, which is based on soegard's package and is available from http://www.neilvandyke.org/sicp-plt/. The nice thing about this package is that when installed, you can use Language|Choose Language.... menu item to select SICP.

Share:
32,770
Joel McCracken
Author by

Joel McCracken

Updated on February 13, 2020

Comments

  • Joel McCracken
    Joel McCracken over 4 years

    I have been using PLT Scheme, but it has some issues. Does anyone know of a better implementation for working through SICP?

  • Jonathan Hartley
    Jonathan Hartley about 13 years
    The thing I didn't like about MIT Scheme was that I couldn't figure out how to simply execute a scheme script from the command-line and have its output displayed in my console - the same way I'd expect to run a Python or Ruby script. Was I being extremely dense? How is this achieved, without launching the big interactive Emacs-based environment and then having to quit it again every time?
  • soegaard
    soegaard about 12 years
    Note: Neil van Dyke has written a very nice SICP package for Racket. Use this instead of my old one.
  • tutysara
    tutysara almost 12 years
    there is a pre built 64 bit version of mit-scheme here - [www-users.cselabs.umn.edu/classes/Fall-2010/csci1901/…
  • Bernard Notarianni
    Bernard Notarianni over 11 years
    Just successfully compiled it on Ubuntu X64 using the source provided on GNU site.
  • FUD
    FUD almost 11 years
    hmm OP asked about PLT Scheme which became DrScheme and then DrRacket and finally Rocket lang now.
  • offby1
    offby1 over 9 years
    @f4hy I suspect that a 32-bit version would work fine on x86_64
  • Display Name
    Display Name almost 8 years
    Warning: it's impossible to securely install the SICP support package. When you run that code (#lang planet neil/sicp), it tries to download stuff via plain http, so MitM attacks are possible. And when downloading code which will be executed on your machine, this is a big deal. The page isn't available through https, that's also means you can get anything at all instead of the content. I hope the author will fix it at some time.
  • soegaard
    soegaard almost 8 years
    Don't worry. The SICP package has moved from PLaneT to pkgs.racket-lang.org.
  • Gringo Suave
    Gringo Suave over 7 years
    To exec from command line: stackoverflow.com/questions/24720112/…
  • Alex Gian
    Alex Gian over 5 years
    You do not have to use Edwin to run MIT-Scheme. Edwin is just specified as an option on the command line script, which you can change. I run MIT-Scheme under Emacs(24), set up as the default scheme implementation, so that M-x 'run-scheme' instantly fires up the MIT environment that I want (mechanics/scmutils). It is surprisingly easy if you just think about it a bit. The Dr Racket interface with the '#lang sicp' option is very good too, we've come a long way from the bad old days... (All this on Ubuntu, 16.04 LTS)
  • Isaac Rabinovitch
    Isaac Rabinovitch over 5 years
    Did you notice that I said that I don't want to re-learn EMACS? If you could point me at command line docs that I could use to integrate MIT Scheme with my favorite editor, that would be useful information.
  • Alex Gian
    Alex Gian over 5 years
    Sorry, I have no docs to hand, but MIT-Scheme is not tied to any editor. If you cd to your mit-scheme installation directory (the one that has just a bin and a lib directory in it), the the following command should get you going: >> bin/mit-scheme --library ./lib --heap 120000 << . After that it's up to you to configure it with your "favourite editor". Or just use the command line as a repl and load whatever file you want from your ed.
  • Isaac Rabinovitch
    Isaac Rabinovitch over 5 years
    So, instead of "You have to use edwin" I should have said "You have to use edwin unless you're willing to use a complicated, undocumented hack." Thanks for the correction.
  • Flux
    Flux almost 5 years
  • soegaard
    soegaard over 4 years
    Note: The picture language has more features (such as colors and larger sizes) than the picture language described in the book. The source contains examples: github.com/sicp-lang/sicp/blob/master/sicp-pict/main.rkt
  • Ludovic Kuty
    Ludovic Kuty almost 3 years
    With CHICKEN Scheme 5.2.0, we use two SRFIs : 203 and 216. chicken-install srfi-203 and chicken-install srfi-216.
  • Philipp Ludwig
    Philipp Ludwig over 2 years
    Downvote, because DrRacket does not work at all. If you write #lang sicp as stated in the sicp plugin documentation, all you get is read-syntax: #lang` not enabled`.
  • soegaard
    soegaard over 2 years
    @PhilippLudwig you need to install the sicp package first. Choose the package manager in … one of the first menus of DrRacket.
  • Philipp Ludwig
    Philipp Ludwig over 2 years
    @soegaard Of course I installed it according to the documentation; it still does not work.
  • soegaard
    soegaard over 2 years
    @PhilippLudwig which version of racket an is do you have? It’s supposed to work.
  • Philipp Ludwig
    Philipp Ludwig over 2 years
    @soegaard Version 8.2.
  • soegaard
    soegaard over 2 years
    @PhilippLudwig I just tested on version 8.3.0.2 on macOS and that worked. StackOverflow is not the best medium for trouble shooting. Can I get you to submit an issue here instead? github.com/sicp-lang/sicp/issues
  • soegaard
    soegaard over 2 years
    @PhilippLudwig Ah! I figured out what's wrong. In the lower left corner of DrRacket, you will need to change the languge to "Determine language from source".
  • Philipp Ludwig
    Philipp Ludwig over 2 years
    @soegaard I did that, it still does not work. I will just leave it at that, but thanks for your support.
  • soegaard
    soegaard over 2 years
    @PhilippLudwig Which error do you see? On Github you can send a screen shot.
  • Philipp Ludwig
    Philipp Ludwig over 2 years
    @soegaard Okay, I figured it out. You have to type #lang sicp in the upper window, not at the prompt in the lower Window. I was not aware of that.
  • SodaCris
    SodaCris about 2 years
    installation commands: raco pkg install sicp, use in REPL: (require sicp), then enter (inc 1) to test.