<p>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 <a href="http://www.ccs.neu.edu/home/matthias/HtDP2e/" rel="noreferrer">How to Design Programs</a> by Felleisen, Findler, Flatt, and Krishnamurthi (the last of whom is <a href="https://cseducators.stackexchange.com/users/290/shriram-krishnamurthi">a user on this very site</a>).</p>

<p>Please see my answer here (<a href="https://cseducators.stackexchange.com/a/3643/27">Scheme - Which book To Use</a>) for further details.</p>

CC BY-SA 3.0
2017-09-15T19:59:01.763Z
2017-09-15T19:59:01.763Z
Ben I.
<p><a href="http://racket-lang.org" rel="noreferrer">Racket</a> is a variant of Scheme that is both very good and very popular. The DrRacket system is probably all you need. </p>

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

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

CC BY-SA 3.0
2017-09-15T16:32:45.043Z
DrRacket, along with [How To Design Programs, second edition](http://www.ccs.neu.edu/home/matthias/HtDP2e/) was the way I learned FP, as the "Intro CS" course at my undergrad.
Giuseppe
CC BY-SA 3.0
2017-09-15T11:48:58.723Z
2017-09-15T11:48:58.723Z
Buffy
<p>I won't tell you which one, as I don't know, and would just be my opinion. But here are some criteria.</p>
<ul>
<li>First look at what other learning materials you have, and use the same language.</li>
<li>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 <strong>need</strong> it, and 99% of the time it is evil and best avoided. And then how to abstract it away, that is encapsulate it.</li>
<li>Consider <a href="https://www.gnu.org/software/mit-scheme/" rel="nofollow noreferrer">GNU/MIT Scheme</a> it is <a href="https://www.gnu.org/philosophy/free-sw.en.html" rel="nofollow noreferrer">Free Software</a> and from MIT. I don't know if it meets the other criteria, but I would expect so (as it is from MIT).</li>
</ul>
<hr />
<p>An opinion from <a href="https://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations" rel="nofollow noreferrer">https://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations</a> (some random website, where the author seems to know what they are on about.)</p>
<blockquote>
<p>The Scheme for SICP</p>
<p>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 &quot;picture langauge&quot;. So do that!</p>
</blockquote>
<p>Racket is also <a href="https://www.gnu.org/philosophy/free-sw.en.html" rel="nofollow noreferrer">Free Software</a>, so I would go with that. (Sorry I said that I would not recommend one.)</p>

CC BY-SA 3.0
2017-09-16T00:47:38.093Z
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.
JoL
CC BY-SA 3.0
2017-09-16T10:06:14.910Z
@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.
ctrl-alt-delor
CC BY-SA 3.0
2017-09-16T10:14:32.420Z
@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.
ctrl-alt-delor
CC BY-SA 3.0
2017-09-15T12:20:13.570Z
2017-09-15T12:28:52.147Z
2020-06-18T08:36:57.023Z
ctrl-alt-delor
<p>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 <a href="http://scheme-reports.org/" rel="nofollow noreferrer">scheme site</a> (which did not say much) and then I ended up at the <a href="https://www.gnu.org/software/mit-scheme/" rel="nofollow noreferrer">MIT site</a>. and I also read on the wikipedia that there are several implementations of scheme. </p>

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

CC BY-SA 3.0
2017-09-16T03:05:29.647Z
Can you elaborate on the type of class you're teaching and the type of students? That could impact implementation choice.
thesecretmaster
<scheme>
Scheme - Which implementation to use for teaching
# Scheme - Which implementation to use for teaching

(Asked by: username_0 on 2017-09-15)

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](http://scheme-reports.org/) (which did not say much) and then I ended up at the [MIT site](https://www.gnu.org/software/mit-scheme/). 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.

**Tags:** scheme

> **Comments:**
> **username_1**: Can you elaborate on the type of class you're teaching and the type of students? That could impact implementation choice.  

---

## 3 answers

### Answer by username_2 on 2017-09-15. Score: 5 | Accepted answer

I would add to username_3'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](http://www.ccs.neu.edu/home/matthias/HtDP2e/) by Felleisen, Findler, Flatt, and Krishnamurthi (the last of whom is [a user on this very site](https://cseducators.stackexchange.com/users/290/shriram-krishnamurthi)).

Please see my answer here ([Scheme - Which book To Use](https://cseducators.stackexchange.com/a/3643/27)) for further details.


---

### Answer by username_3 on 2017-09-15. Score: 11

[Racket](http://racket-lang.org) 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.

> **Comments:**
> **username_4**: DrRacket, along with [How To Design Programs, second edition](http://www.ccs.neu.edu/home/matthias/HtDP2e/) was the way I learned FP, as the "Intro CS" course at my undergrad.  

---

### Answer by username_5 on 2017-09-15. Score: 4

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](https://www.gnu.org/software/mit-scheme/) it is [Free Software](https://www.gnu.org/philosophy/free-sw.en.html) 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](https://www.gnu.org/philosophy/free-sw.en.html), so I would go with that. (Sorry I said that I would not recommend one.)

> **Comments:**
> **username_6**: 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.  
> **username_5**: @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.  
> **username_5**: @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.  

---

