
Racket v6.2 - lelf
https://groups.google.com/forum/#!topic/racket-users/AOnzfwcYyV0
======
r0naa
The best CS course I took was "Designing Functional Programs", an introductory
course at Waterloo.

Haskell is used as the pseudo-code for lectures while assignments are written
in Racket.

The course was great because the professor (PR) was:

1- Passionate

2- Knowledgeable

3- A kind person

I have found Racket to be a very effective way to make students (most of them
have either no CS background or only have played around with imperative/OOP
languages) more comfortable with functional programming.

The best memory I have was during the first lecture. After all the
administrative fluff, the prof open his pdf and the first slide reads:
"Induction"

I remember thinking "Is this a maths or a CS course?"

The second slide defined the set of natural numbers. As the prof start
explaining the syntax and its meaning, I slowly start to realize the beauty of
those few words:

Data Nat = Z | S Nat

where Z represent 0 and S the successor function.

We define the data type "Nat" to be either zero or the successor function
applied to a "Nat".

It was my "ahah" moment. I was mind-blown by the language's clear syntax and
immensely powerful semantics. (This is Haskell not Scheme/Racket).

We would later be introduced to lambda calculus (untyped vs typed), infinite
data structures, interpreters etc... It was glorious... What a great
professor.

The only "downside" to this is that Racket/Scheme isn't very much used outside
of Academia. Which is clearly a shame given its incredible built-in features
and elegant LISP-like syntax.

Should anyone have insights/opinions on why Racket/Scheme aren't more used,
please feel free to share them with us!

~~~
codygman
Re: why racket isn't used more

Last time I did some json parsing it was poetry slow. I've also heard the
continuation based webserver was slow and uses a lot of memory.

I'll have to benchmark again to be sure. I hope I'm wrong, racket was very
enjoyable to use.

~~~
soegaard
There is a simple solution: Don't use continuation. Write your web-app in the
same way you would in Python or similar.

See "Low-level web programming in Racket + a wiki in 500 lines" by Matt Might:

[http://matt.might.net/articles/low-level-web-in-
racket/](http://matt.might.net/articles/low-level-web-in-racket/)

~~~
codygman
I saw this and it made me very happy. I was going to mention it in my original
comment but I couldn't remember the link. I'm going to put this in my
"tutorial TODO" list, it looks like a lot of fun! Thanks :)

------
chinpokomon
I'd just love to see this work well with a proper SCIP plugin on Windows.
MIT/GNU Scheme sort of works on Windows, but you can't integrate it with
EMACS. Dr. Racket comes closer, but the libraries have been moved from (or to,
I don't remember off hand) Planet, and trying to get them installed is painful
and prone to error. It becomes really difficult to study the lectures without
a good environment and Dr. Racket is the most promising because it supports
graphical output. I just wish it worked properly.

~~~
dzpower
I got a fair way through SICP using DrScheme (now DrRacket) a few years ago
without any special compatibility modes, and found the set-up to be pretty
great.

Now there's better compatibility thanks to

#lang planet neil/sicp

[http://www.neilvandyke.org/racket-sicp/](http://www.neilvandyke.org/racket-
sicp/)

~~~
chinpokomon
That's what I've had such a hard time setting up. The newer Dr. Racket uses a
different library system and last time I tried to get things working (on 6.1 I
think) it has all sorts of problems downloading. I had to use older versions
and it was never installed correctly.

