What is the best Scheme implementation for working through SICP?
Asked Answered
P

8

76

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

Peafowl answered 4/11, 2008 at 2:52 Comment(0)
D
68

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.

Dever answered 4/11, 2008 at 2:58 Comment(6)
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?Connect
there is a pre built 64 bit version of mit-scheme here - [www-users.cselabs.umn.edu/classes/Fall-2010/csci1901/…Reckoning
Just successfully compiled it on Ubuntu X64 using the source provided on GNU site.Nofretete
@f4hy I suspect that a 32-bit version would work fine on x86_64Favored
To exec from command line: #24720612Wirewove
@JonathanHartley How do I execute a .scm script (outside of the REPL) with MIT-Scheme?Flushing
P
96

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

Palaeobotany answered 4/11, 2008 at 18:43 Comment(16)
Note: Neil van Dyke has written a very nice SICP package for Racket. Use this instead of my old one.Palaeobotany
hmm OP asked about PLT Scheme which became DrScheme and then DrRacket and finally Rocket lang now.Segalman
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.Heritor
Don't worry. The SICP package has moved from PLaneT to pkgs.racket-lang.org.Palaeobotany
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.rktPalaeobotany
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`.Incommensurable
@PhilippLudwig you need to install the sicp package first. Choose the package manager in … one of the first menus of DrRacket.Palaeobotany
@Palaeobotany Of course I installed it according to the documentation; it still does not work.Incommensurable
@PhilippLudwig which version of racket an is do you have? It’s supposed to work.Palaeobotany
@Palaeobotany Version 8.2.Incommensurable
@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/issuesPalaeobotany
@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".Palaeobotany
@Palaeobotany I did that, it still does not work. I will just leave it at that, but thanks for your support.Incommensurable
@PhilippLudwig Which error do you see? On Github you can send a screen shot.Palaeobotany
@Palaeobotany 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.Incommensurable
installation commands: raco pkg install sicp, use in REPL: (require sicp), then enter (inc 1) to test.Erie
D
68

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.

Dever answered 4/11, 2008 at 2:58 Comment(6)
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?Connect
there is a pre built 64 bit version of mit-scheme here - [www-users.cselabs.umn.edu/classes/Fall-2010/csci1901/…Reckoning
Just successfully compiled it on Ubuntu X64 using the source provided on GNU site.Nofretete
@f4hy I suspect that a 32-bit version would work fine on x86_64Favored
To exec from command line: #24720612Wirewove
@JonathanHartley How do I execute a .scm script (outside of the REPL) with MIT-Scheme?Flushing
A
13

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

Attending answered 12/11, 2016 at 10:26 Comment(0)
A
12

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

Aeroembolism answered 4/11, 2008 at 3:3 Comment(0)
D
6

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.

Dulles answered 30/6, 2009 at 3:52 Comment(0)
A
2

CHICKEN Scheme has an sicp library that provides support for SICP. You can install it by running chicken-install sicp and writing this at the beginning of your source code: (use sicp).

Arrive answered 18/8, 2016 at 18:8 Comment(1)
With CHICKEN Scheme 5.2.0, we use two SRFIs : 203 and 216. chicken-install srfi-203 and chicken-install srfi-216.Warwick
L
1

PLT Scheme works pretty well, or MIT Scheme as Keparo suggested. What issues are you having with it?

Linville answered 4/11, 2008 at 3:3 Comment(0)
G
0

I'm now working through SICP using Chez Scheme. It's a pretty old dialect of Scheme, so presumably it isn't too far from what SICP was written around.

Note that the Chez Scheme project page links a Windows binary and source that can be built on Unix-like platforms. But if you're on a Mac, you'll probably want to do

brew chezscheme
man chez

Assuming you have homebrew, which you really should.

Why not MIT Scheme? Because the interactive front end is Edwin, an editor that uses EMACS conventions. (Currently, it's an actual EMACS mode, tho it used to be implemented in Scheme.) I used to know basic EMACS, but my skills atrophied from disuse, which tells me that relearning this editor is just not worth the trouble.

Why not DrRacket? If I had seen @frederick-squid 's brew instructions, I might have given it a try. Instead I tried to follow the official instructions for scheme and sicp, which are seriously out of date. Then I tried to make the IDE go into scheme mode, which seems to be intuitive but isn't.

Just too much trouble. And I'm not sure I want to get into a fancy language design IDE, especially one whose poor support of Scheme sparked the original question.

Goudy answered 27/12, 2017 at 23:50 Comment(4)
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)Eastwardly
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.Goudy
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.Eastwardly
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.Goudy

© 2022 - 2024 — McMap. All rights reserved.