Racket gets in your head like nothing else. Once you learn it, (Scheme does this too) you get x-ray vision to see every other language modulo syntax.
I have been writing Elixir professionally for the bulk of my career. (It’s been pretty awesome!) Despite this, I consider Racket to be my native language because it’s so easy for me to think in Racket. It’s the perfect bridge between my brain and the problem domain.
I’m thankful for Racket - it got me regularly programming in lisp by virtue of LeetCode accepting it as one of its languages.
I did start to feel Racket’s “wordiness” towards the end - it started to feel a bit like COBOL. I’ve since moved onto Clojure and really appreciate the shorter keywords/function names/fewer parenthesis.
I still miss for/fold though - that thing is an absolute machine.
Racket is used across CS programs that have adopted the How to Design Programs book [1] (some schools do not use the original book, just the textbook for source material).
I was just remembering https://htdp.org fondly yesterday. Working through that book was one of the most wonderful and transformative experiences I've had in programming. I owe so much of my problem solving skills today to that book.
Racket is an amazing language for prototyping ideas that you don't understand yet.
At $dayjob I'm using it to test what novel geometries of deep learning models would look like. Being able to redefine any part of the stack for any reason is a superpower you don't know you need until you do.
A great place to start is the little learner which holds your hand until you get opinionated about what the underlying primitives should look like. E.g. what if we used sparse tensor representation?
That sounds kind of amazing. But you're not actually doing the machine learning in Racket, are you? Is your Racket code generating other code like PyTorch?
I used a predecessor of this almost thirty years ago to learn Scheme and work trough the book SICP. The Racket maintainers still ship updates and new features, that’s remarkable.
Scheme is a wonderful lisp dialect. It taught me basics of functional programming, about closures, about tail call recursion, about functions always returning values (which annoyed me a lot when I started learning Python, where .append or .sort returened `none` instead of the list, and were destructive).
So I have very fond memories of Racket (then DrScheme) and Scheme. Had also written my matrix multiplication library and my CAS system to mimic the functionality of my HP28s calculator.
Racket gets in your head like nothing else. Once you learn it, (Scheme does this too) you get x-ray vision to see every other language modulo syntax.
I have been writing Elixir professionally for the bulk of my career. (It’s been pretty awesome!) Despite this, I consider Racket to be my native language because it’s so easy for me to think in Racket. It’s the perfect bridge between my brain and the problem domain.
Racket - the Language-Oriented Programming Language - version 9.2 is now available from https://download.racket-lang.org
See https://blog.racket-lang.org/2026/05/racket-v9-2.html for the release announcement and highlights.
If you are using rackup you can upgrade with `rackup upgrade`
Don’t forget to migrate your packages with raco pkg migrate 9.1
I’m thankful for Racket - it got me regularly programming in lisp by virtue of LeetCode accepting it as one of its languages.
I did start to feel Racket’s “wordiness” towards the end - it started to feel a bit like COBOL. I’ve since moved onto Clojure and really appreciate the shorter keywords/function names/fewer parenthesis.
I still miss for/fold though - that thing is an absolute machine.
Northeastern graduates assemble!
Racket is used across CS programs that have adopted the How to Design Programs book [1] (some schools do not use the original book, just the textbook for source material).
[1] https://en.wikipedia.org/wiki/How_to_Design_Programs
I was just remembering https://htdp.org fondly yesterday. Working through that book was one of the most wonderful and transformative experiences I've had in programming. I owe so much of my problem solving skills today to that book.
2 replies →
Racket is an amazing language for prototyping ideas that you don't understand yet.
At $dayjob I'm using it to test what novel geometries of deep learning models would look like. Being able to redefine any part of the stack for any reason is a superpower you don't know you need until you do.
A great place to start is the little learner which holds your hand until you get opinionated about what the underlying primitives should look like. E.g. what if we used sparse tensor representation?
You might like having a go at Lush. It has fallen out of favor of late but is a very interesting language/system.
https://scottlocklin.wordpress.com/2024/11/19/lush-my-favori...
Sounds interesting but I'm using very spare very high rank tensors, e.g. rank 3 neuron equivalents.
As such pretty much all numerical optimisations are useless for my work. Racket however chugs along happily, if slowly.
That sounds kind of amazing. But you're not actually doing the machine learning in Racket, are you? Is your Racket code generating other code like PyTorch?
I'm doing the learning in racket because the bottleneck is human understanding.
That mnist takes 30 minutes per epoch isn't a worry when I don't even know what vector addition should look like.
5 replies →
I used a predecessor of this almost thirty years ago to learn Scheme and work trough the book SICP. The Racket maintainers still ship updates and new features, that’s remarkable.
Scheme is a wonderful lisp dialect. It taught me basics of functional programming, about closures, about tail call recursion, about functions always returning values (which annoyed me a lot when I started learning Python, where .append or .sort returened `none` instead of the list, and were destructive).
So I have very fond memories of Racket (then DrScheme) and Scheme. Had also written my matrix multiplication library and my CAS system to mimic the functionality of my HP28s calculator.
Have to look into it again.
Racket is my favorite language, unfortunately I still use python the most mainly because of the ecosystem. https://xkcd.com/353/
There is a package made by soegaard to use Python libraries from Racket https://racket.discourse.group/t/pyffi-use-python-from-racke...
[dead]