Racket is my favorite language. It's fast, practical, has solid foundations and an extremely nice concurrency story (based on concepts borrowed and extended from Concurrent ML). It has an excellent documentation system, with an integrated package ecosystem, which means that most packages have high quality documentation with cross-references. It has a great backwards-compatibility story -- a lot better than Python's, for example, which I use in my current dayjob. So, my impression of the commenters saying it's too academic or not practical is that they probably never dove deeply enough, or they are former students who were only exposed to the teaching languages in the past. It's definitely not perfect: the community is small, the runtime has a high memory baseline, parallelism requires spinning up a Racket VM per system thread, among others, but these are things that will improve over time.
In the past several years, I've:
* built & run an e-commerce site written in Racket[1]
* built a native macOS and iOS reminders app, available on the App Store [2, 3, 4]
* built a cross-platform desktop client for Apache Kafka [5, 6, 7]
* built a `#lang` for Lua [8]
Among[9] other[10] things[11]. I think that's all pretty practical stuff!
I also just want to add that Bogdan is the author of gui-easy and http-easy, which are indispensable libraries in the Racket ecosystem.
Bogdan also is extremely helpful and active on the community forums and gives EXTREMELY helpful answers on there.
Definitely an unsung hero of the language - just wanted to give a shout-out - I can report that your libraries are powering code that is making some unsuspecting users lives much easier :)
>It has a great backwards-compatibility story -- a lot better than Python's, for example, which I use in my current dayjob.
I think this is a really important point. I worked intensively with Python for years, but it was a deep disappointment to see how little the core devs and the community care about backwards compatibility in the 2/3 transition, and things have not improved. That might be due to what Python is dominantly used for today (The Numeric/Numpy transition which happened around 2000 was totally different). Breaking things every few years might be OK for unicorn startups or companies that move fast and, well, break things, but there is a lot of valuable programming from people and in organisations which can simply not afford, or do not see it as a priority to re-write mature algorithms every few years.
In the past several years, I've:
* built & run an e-commerce site written in Racket[1]
* built a native macOS and iOS reminders app, available on the App Store [2, 3, 4]
* built a cross-platform desktop client for Apache Kafka [5, 6, 7]
* built a `#lang` for Lua [8]
Among[9] other[10] things[11]. I think that's all pretty practical stuff!
[1]: https://defn.io/2019/08/20/racket-ecommerce/
[2]: https://defn.io/2020/01/02/ann-remember/
[3]: https://defn.io/2024/04/09/ann-remember-for-ios/
[4]: https://github.com/bogdanp/remember
[5]: https://defn.io/2022/11/20/ann-franz/
[6]: https://defn.io/2023/10/15/ann-franz-for-windows/
[7]: https://defn.io/2023/08/10/ann-franz-source-available/
[8]: https://defn.io/2022/11/12/ann-racket-lua/
[9]: https://docs.racket-lang.org/http-easy/index.html
[10]: https://docs.racket-lang.org/deta/index.html
[11]: https://docs.racket-lang.org/gui-easy/index.html