A few days ago, I asked a question if I should use F sharp to learn functional programming and the discussion eventually suggested that I take up Scheme. So, I visited the scheme site (which did not say much) and then I ended up at the MIT site. and I also read on the wikipedia that there are several implementations of scheme.

So, the question is which implementation ( I have given a reference of MIT implementation above) should I use for my beginner class on Scheme.

  • $\begingroup$ Can you elaborate on the type of class you're teaching and the type of students? That could impact implementation choice. $\endgroup$
    – thesecretmaster
    Sep 16, 2017 at 3:05

3 Answers 3


I would add to Buffy's answer that DrRacket also contains several built-in learning languages that allow you to dip into Scheme slowly. These languages are designed to be used with the free online textbook How to Design Programs by Felleisen, Findler, Flatt, and Krishnamurthi (the last of whom is a user on this very site).

Please see my answer here (Scheme - Which book To Use) for further details.


Racket is a variant of Scheme that is both very good and very popular. The DrRacket system is probably all you need.

DrRacket is widely used and there is quite a bit of information about it online. It provides a very simple interface.

There are also Scheme plugins for NetBeans and Eclipse if you want a more complete IDE.


I won't tell you which one, as I don't know, and would just be my opinion. But here are some criteria.

  • First look at what other learning materials you have, and use the same language.
  • Some versions of scheme are not pure (that is they have mutation). Do not use one of these. Half way through structure and interpretation of computer programs, we learn how to implement mutation. But not until we have learnt that we never need it, and 99% of the time it is evil and best avoided. And then how to abstract it away, that is encapsulate it.
  • Consider GNU/MIT Scheme it is Free Software and from MIT. I don't know if it meets the other criteria, but I would expect so (as it is from MIT).

An opinion from https://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations (some random website, where the author seems to know what they are on about.)

The Scheme for SICP

Many people come by #scheme asking which Scheme they should use for following along with Structure and Interpretation of Computer Programs. SICP was originally written for MIT Scheme, but these days it's easier to use Neil Van Dyke's SICP mode for Racket. It has nice support for SICP's "picture langauge". So do that!

Racket is also Free Software, so I would go with that. (Sorry I said that I would not recommend one.)

  • $\begingroup$ Huh, I didn't know GNU had another Scheme implementation besides Guile. I think this is the first time I've seen them have 2 programs for the same task. Kind of weird, as I thought their (original) grand goal was to make their ideal open source operating system. $\endgroup$
    – JoL
    Sep 16, 2017 at 0:47
  • $\begingroup$ @Jol I did not know they had two ether (I did not know about guile). As for there goals the main one: “The goal of GNU was to give users freedom”, that is all software should be Free Software. Then to make an Operating System, and all of the software that runs on it (directly or with other peoples help). From the name, I think MIT way have written this scheme. $\endgroup$ Sep 16, 2017 at 10:06
  • $\begingroup$ @Jol While (almost) all Open Source software is Free Software, they are not the same. Some philosophical differences. Also I have found it very difficult to explain Open Source, but easy to explain Free Software. People often miss represent both: When someone says “for free”, it is easy to correct them. Just explain the meaning of free (not free of charge, but free as in freedom). When someone says that “source code openly available”. It is much harder to put them right. All that can be done is point them to a long definition document. Also Source is focused on developers, Free is about users. $\endgroup$ Sep 16, 2017 at 10:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.