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!
> Should anyone have insights/opinions on why Racket/Scheme aren't more used, please feel free to share them with us!
Well, I'm not sure what happened to Arc, but I thought that was based off of plt-scheme/racket -- but never ported to recent releases. Which is a shame because racket has certainly improved a lot (possibly not in ways that matter for Arc).
Does anyone know why/what the status is there?
Additionally, while some(?) older(?) versions of hn is open source[1], being based off a dead(?) dialect of an outdated(?) scheme didn't really help.
Other than that, running a really popular niche web site/forum in production should make Arc interesting, which in turn should make racket interesting. But that apparently didn't happen.
Anyone know what hn currently runs (the stack - is it essentially an updated version of[1] -- or something entirely different)?
Other than that recent example of not becoming popular, I think that the focus on education has lead a lot of people to miss how good racket actually is, out of the box.
It does seem to me to have some of the same challenges as other lisps when it comes to deployment -- it's not all that easy to see how to easily tag something for release, run it through CI and deploy it with some predictable success. Not really any technical limitation, more that it's just not obvious. And wasn't something that was highlighted by racket before, at least.