Rhombus is what Racket should have been, back when it was the learning language at MIT, before it became Python. Had it been like this, maybe Python would have never gained traction within that community. The world would have been a very different place.
Rhombus' syntax is soooo beautiful. As a Racketeer, it's my dream language.
All the power of Racket... without a Lots of Insipid, Stupid Parenthesis.
Not that I don't like the parens, mind you, but Rhombus looks so much more... 2009. My only regret is that nobody will use Rhombus, except a few enthusiasts, for fun. In an AI age, new programming languages should really be LLM-first, sadly. But it makes me so happy that there are some people who still care about humans coding.
IIRC, MIT moved away from SICP, and therefore Scheme, because (something like) they saw the field for MIT EECS graduates changing -- from understanding how systems worked in detail, and being able to build from scratch, to assembling systems from off-the-shelf components. And I guess some thought that a currently popular language (first Java, and then Python) was more appealing for that.
One of the other objections to SICP, at least outside of MIT, was that it was too hard (especially for high school students). Which is part of why HtDP, and much of Racket supported that and other educational initiatives by Matthias Felleisen, et al. https://htdp.org/
I'm curious: Did MIT use Racket at some point for SICP, rather than MIT Scheme, either officially or grassroots? Jens Axel Soegaard, Mike Sperber, and I made some conveniences for doing SICP with Racket, circa 2009, but I don't recall hearing that Racket was used for SICP at MIT itself, only at various other places. https://www.neilvandyke.org/racket/sicp/
I love Racket, and have a ton of Racket code I have written over the years. When I get home from a vacation I will have an AI translate a small sample of my Racket code to Rhombus: easiest way for me to play with the language.
The most important ones are fast build/startup times and informative error messages. They can focus on actually debugging your code instead of waiting for the compiler or looking up obscure error codes in the docs (if they have web access, if they don't they will hallucinate).
Lisps are great for fast iteration but the syntax is a big problem because it's so sensitive to a single misplaced paren. LLMs like clean syntax with as little noise and unnecessary tokens as possible. They work better with dynamic or inferred types, low verbosity, no repetition like `Foo foo = new Foo();`, clearly delimited blocks, you get the idea. Parts of the language should compose well so the chance that a reasonable edit will cause a syntax error is as low as possible.
Popularity was a big deal with early coding models that couldn't go from specific languages to a wider idea of programming. Modern LLMs can generalize a lot better and use Rhombus or Gleam with no major issues, but they still work better in Python or JS with more training examples.
Basically the things that make a language LLM friendly are the same ones that make it human friendly, at least if your human is an average developer instead of a FP fanatics or enterprise architect.
Racket was always one of my favorite Lisp / Scheme dialect, mainly because of its very rich ecosystem, you can make websites, GUIs a lot of things with very minimal effort, that and Dr Racket lets you see visually where import goes into code, and a bunch of other nice things.
Rhombus strikes to me as an interesting language in this ecosystem (which it is!) that not only gives you access to all those capabilities, but shows how powerful Racket can be for building programming languages!
That said I have not yet sat down to try it, but as they seem to be doing quick development with it, I just might have to.
I really want to like Racket? I really do, but I just never really enjoyed like I liked Python. And despite trying a bunch of other Lisps and liking them, something about Dr. Racket annoyed me. I'm not sure why.
It's "cool" and the ecosystem rules, and it's fast enough, I just never really found that I liked writing Racket or using Dr. Racket the same way I like writing Python so I never really reached for it when I was trying to do something. Indeed, from the first time I looked at Python I liked it. That was not the case with Javascript or Java or C or PHP? I don't know, I like Python and really want a practical Lisp that I can really sink my teeth into? So by all accounts I should love Racket. And yet, I don't.
That said, Rhombus looks really nice at first glance. This might be worth a sustained excursion to build something a bit more fun... I'm kind of excited about this!
Racket and Clojure are the primary Lisp languages I like. The only thing I don't like about Clojure is the JVM itself ;) Mainly because Oracle stopped working on making Java have a rich GUI stack, JavaFX was brilliantly done and headed in a positive direction, but once Oracle took over Java, it kind of turned it into "that one backend language" essentially, instead of the cross-platform multi-application need swizz army knife it used to be.
DrRacket seems to have doing the thing where they implement of a bunch of GUI stuff from scratch and miss a lot of edge cases in the process. It feels unpolished and a bit janky.
Racket was my main language for personal stuff for years despite me never really liking it all that much and not able to put my finger on why. It's not even top 10 languages or top 5 lisps for me but it is just incredibly practical. I have zero passion for this language.
The way I use racket its main competitor is python. It's for when I want to accomplish something with heavy third party deps, and I have zero interest in writing the actual cool code I just need to make some libraries kiss and then use my tool. Not saying that's the case here but maybe racket just doesn't offer you much that python doesn't?
Sounds like you'd get more from just using one of the other lisps you liked, especially if there's a more specialized one that wouldn't be competing with a language you probably would prefer to use anyway. Like eg I have to deal with a lot of lua so I get my lisp rocks off with fennel.
This is something to think about... and you know, the other side of it is, "maybe I should play with Rhombus but also just spend some time playing more in Racket and choose to like it more?" lol - we can do that right? Choose to enjoy things?
One of the things I've really wanted to get into is writing some DSLs and Racket and Rhombus are supposed to be the tools you're supposed to reach for for that?
I don't know, the god's honest truth is that I don't write nearly as much code as I did 8 months ago lol, so maybe just diving into Racket and Rhombus for personal stuff would be fun and it doesn't have to something for work...
Really, the lisps I've really liked are Guile Scheme (ok not a lisp really but lispy enough and I liked it) and Clojure? But though I liked them I never had enough work in them to get really good. I do like Lispy languages in general though (since Emacs Lisp, which is glorious in it's own way), I just need the excuse to start playing with them more because they're fun.
You know what I've been really intrigued with over the years has been uLisp (which should be pronounced Micro Lisp) for microcontrollers (http://www.ulisp.com/), but a really cool project would be a DSL that spits out C for the STM32 boards I play with periodically for embedded stuff? I don't know, maybe after I get the cabin done... that'd be a really fun adventure and writing a DSL for that would make my life immensely easier...
Racket and Rhombus are nice for writing embedded DSLs, yeah. More generally, they're nice for writing macros. Scheme in general is nice for writing macros with its `syntax-case` and first-class notions of syntax objects, but Racket is /really/ nice with its `syntax-parse` and explicit notions of phase levels... If you are interested in learning, Greg Hendershott's "Fear of Macros" is often recommended as a good introduction. https://www.greghendershott.com/fear-of-macros/
I was reading through "Let Over Lambda" and kind of out of my depth because while I can mostly figure out what's going on I'm not using CL as a daily driver so the book just references functions and I'm like, "well I guess do-thing-nicely, does the thing nicely? Alright, good enough I suppose."
Maybe I should really give things another go with it. Thanks!
I experimented with Rhombus some time ago (most especially with Shplait). Is there much new with Shplait? Something I remember struggling with was trying to use racket libraries in Rhombus/Shplait
With AI becoming so predominant, I wonder if dynamically typed languages will lose favorability? Seems to me like a heavily documented, statically typed language is going to be ideal for AI programming. I'm wondering what role these flexible, coder-friendly, dynamically typed languages will play in the years to come.
That is a really good question. My personal intuition is that LLMs do well with any language as long as you set up for fast syntax checking tools, access to either a REPL or very fast to run tests, etc.
I usually use small local models, and the work to set up very concise skills and efficient tooling is a big part of the fun. I have also adopted the practice of writing my own custom coding harnesses (these can be less than 2000 lines of code, not the huge project you might expect.)
Actually, staticly typed languages are easier for both humans and machines; however dynamically typed languages are harder for humans and probably neutral for LLMs. LLM should be able to infer usage (hence "typing") because it can put the entire codebase in its context, while humans cannot.
I'd count in LLM coding agents favour: e.g. willingness and capability to do things which I'd have to go read a tutorial for; as well as rapidly being able to iterate and narrow down e.g. when given access to a repl.
Rhombus looks promising in terms of tooling.
On the other hand: LLMs are susceptible to incorrectly guessing "I think it should work this way".. I'd guess the powerful flexibility of metaprogramming could be more annoying than helpful. But, I'm curious.
Python has remained in the top 5 (often near or at the top) most used programming languages for years. Meaningful whitespace is not stopping people from using it in enough numbers to make it clear that it's a detriment as a language feature.
I don't think Gauche fits there. There is a tradition of naming with synonyms for "scheme" (as in a criminal enterprise) like the others you listed, with some more peripheral ones like Gambit, Ruse, Artifice.
The way the Rhombus / Racket community does libraries has to change. That whole package site has to change. Being a contributor on there exposes you to a steady stream of fraud garbage. There's nothing to promote the top libraries as the top libraries.
I agree that a ranking mechanism would be nice, but what do you mean by "fraud garbage"? I personally am not aware of any malicious package in the Racket ecosystem.
Ah, I see what you mean now. Yeah, that was indeed problematic. We kinda fixed this issue a while back by obfuscating emails (https://github.com/racket/racket-pkg-website/pull/88), but it doesn't help with already scraped emails. Also, the raw emails are still technically readable if one knows where to look at.
Rhombus' syntax is soooo beautiful. As a Racketeer, it's my dream language. All the power of Racket... without a Lots of Insipid, Stupid Parenthesis. Not that I don't like the parens, mind you, but Rhombus looks so much more... 2009. My only regret is that nobody will use Rhombus, except a few enthusiasts, for fun. In an AI age, new programming languages should really be LLM-first, sadly. But it makes me so happy that there are some people who still care about humans coding.
One of the other objections to SICP, at least outside of MIT, was that it was too hard (especially for high school students). Which is part of why HtDP, and much of Racket supported that and other educational initiatives by Matthias Felleisen, et al. https://htdp.org/
I'm curious: Did MIT use Racket at some point for SICP, rather than MIT Scheme, either officially or grassroots? Jens Axel Soegaard, Mike Sperber, and I made some conveniences for doing SICP with Racket, circa 2009, but I don't recall hearing that Racket was used for SICP at MIT itself, only at various other places. https://www.neilvandyke.org/racket/sicp/
Interesting. For me the interesting part of Racket has always been the language itself. What else is there that you like and can use from Rhombus?
Lisps are great for fast iteration but the syntax is a big problem because it's so sensitive to a single misplaced paren. LLMs like clean syntax with as little noise and unnecessary tokens as possible. They work better with dynamic or inferred types, low verbosity, no repetition like `Foo foo = new Foo();`, clearly delimited blocks, you get the idea. Parts of the language should compose well so the chance that a reasonable edit will cause a syntax error is as low as possible.
Popularity was a big deal with early coding models that couldn't go from specific languages to a wider idea of programming. Modern LLMs can generalize a lot better and use Rhombus or Gleam with no major issues, but they still work better in Python or JS with more training examples.
Basically the things that make a language LLM friendly are the same ones that make it human friendly, at least if your human is an average developer instead of a FP fanatics or enterprise architect.
Much more than other languages are sensitive to misplaced braces/indentation?
Rhombus strikes to me as an interesting language in this ecosystem (which it is!) that not only gives you access to all those capabilities, but shows how powerful Racket can be for building programming languages!
That said I have not yet sat down to try it, but as they seem to be doing quick development with it, I just might have to.
The entire Rhombus repo is all Racket:
https://github.com/search?q=repo%3Aracket%2Frhombus++languag...
Building languages was always one of selling points racket tried to push; the "Language-Oriented Programming Language" slogan and all.
But I have to use other languages, like Python, JavaScript, and Swift, for employability and (sometimes) ecosystem/integration reasons.
It's "cool" and the ecosystem rules, and it's fast enough, I just never really found that I liked writing Racket or using Dr. Racket the same way I like writing Python so I never really reached for it when I was trying to do something. Indeed, from the first time I looked at Python I liked it. That was not the case with Javascript or Java or C or PHP? I don't know, I like Python and really want a practical Lisp that I can really sink my teeth into? So by all accounts I should love Racket. And yet, I don't.
That said, Rhombus looks really nice at first glance. This might be worth a sustained excursion to build something a bit more fun... I'm kind of excited about this!
The way I use racket its main competitor is python. It's for when I want to accomplish something with heavy third party deps, and I have zero interest in writing the actual cool code I just need to make some libraries kiss and then use my tool. Not saying that's the case here but maybe racket just doesn't offer you much that python doesn't?
Sounds like you'd get more from just using one of the other lisps you liked, especially if there's a more specialized one that wouldn't be competing with a language you probably would prefer to use anyway. Like eg I have to deal with a lot of lua so I get my lisp rocks off with fennel.
One of the things I've really wanted to get into is writing some DSLs and Racket and Rhombus are supposed to be the tools you're supposed to reach for for that?
I don't know, the god's honest truth is that I don't write nearly as much code as I did 8 months ago lol, so maybe just diving into Racket and Rhombus for personal stuff would be fun and it doesn't have to something for work...
Really, the lisps I've really liked are Guile Scheme (ok not a lisp really but lispy enough and I liked it) and Clojure? But though I liked them I never had enough work in them to get really good. I do like Lispy languages in general though (since Emacs Lisp, which is glorious in it's own way), I just need the excuse to start playing with them more because they're fun.
You know what I've been really intrigued with over the years has been uLisp (which should be pronounced Micro Lisp) for microcontrollers (http://www.ulisp.com/), but a really cool project would be a DSL that spits out C for the STM32 boards I play with periodically for embedded stuff? I don't know, maybe after I get the cabin done... that'd be a really fun adventure and writing a DSL for that would make my life immensely easier...
I was reading through "Let Over Lambda" and kind of out of my depth because while I can mostly figure out what's going on I'm not using CL as a daily driver so the book just references functions and I'm like, "well I guess do-thing-nicely, does the thing nicely? Alright, good enough I suppose."
Maybe I should really give things another go with it. Thanks!
A weird thing: whichever Lisp language I am currently using for work (or a side project) is my favorite.
Rhombus is easy to use and uniquely customizable.
See https://blog.racket-lang.org/2026/08/rhombus-v1.1.html for the release announcement and highlights.
I usually use small local models, and the work to set up very concise skills and efficient tooling is a big part of the fun. I have also adopted the practice of writing my own custom coding harnesses (these can be less than 2000 lines of code, not the huge project you might expect.)
Rhombus looks promising in terms of tooling.
On the other hand: LLMs are susceptible to incorrectly guessing "I think it should work this way".. I'd guess the powerful flexibility of metaprogramming could be more annoying than helpful. But, I'm curious.
Python has remained in the top 5 (often near or at the top) most used programming languages for years. Meaningful whitespace is not stopping people from using it in enough numbers to make it clear that it's a detriment as a language feature.
But it's important to note, at you need editor support for rendindenting blocks easily and correctly.
Qualities or activities that have negative connotations. Guile. Gauche. Larceny. Racket.
I think it started with theorem provers - Planner, Conniver. Then Scheme[r].
https://pkgs.racket-lang.org/?fam=Rhombus
Not that this is a complaint worth airing on HN.
Solution: just block the alias that you use for the submission…