I'm curious: does anyone really care about Racket anymore? In general, does anyone really care about esoteric languages anymore?
With AI, we have converged on a set of languages. For the web, it's JavaScript or TypeScript. For backend, it's Go and Rust. Pretty much nothing else can get picked by AI if you start a new project. If you even like a language like Elixir, there seems to be less and less incentive to use it in production when AI can replicate a lot of its features in Rust for one-tenth of the cost and 10 times the speed of Elixir.
I'm saying this as someone who is designing a programming language, and for me, it's just a lot of fun, but I also know I should not hope for my language to take off anytime soon.
There are enough AI stories on Hacker News. We don't need AI advocates coming to the stories that aren't about AI and saying they don't matter because they're not AI.
Things that aren't AI still matter and are still interesting.
My case for why Elixir is especially suited for use with AI: https://news.ycombinator.com/item?id=49835781 (summary: it's mostly about the BEAM, which is more of a k8s killer than a rust killer).
I don't think this really applies to any of the benefits I've described there:
> AI can replicate a lot of its features in Rust for one-tenth of the cost and 10 times the speed
Industry takeoff would certainly be a nice-to-have. But the racket community is largely computer scientists, who program for research. Will computer scientists turn to Rust to write papers because it's fast ? I don't think so, because their needs seems to be a language that's easy to pick up and experiment with, and writepapers with. People will argue over sexp syntax, but that's why Rhombus exists.
The force of convergence should almost make us care more about other languages, since the explosion of software is a multiplier on good/bad designs, and we should consider what we want our AIs to be using.
Aye--even if you've reached the point of thinking that the only role of a human is to feed good ideas into the machine, language is a thing that shapes thought--Lisp as a family is a thing different enough from a lang wanting to be a better C/C++ or a better Java that getting your brain thinking in terms of it can help you produce a different set of ideas (some of which may even be good ones). For me personally, it's really opened my mind to functional programming and intelligent use of recursion, in a way that I probably wouldn't have ever had cause to consider if I only ever concerned myself with the minimally convergent set of standard business langs, in the way that all our legacy code had been using them.
Of course, Lisps also seem to have the property of attracting people who genuinely like the practice of programming and, if it clicks with you, it has the property of generally leaving you really excited to write more of it. If you're hauling up and spending real American dollars to spend a weekend packed in a hall full of nerds to chat about a niche programming language, you're probably in that group. Consequent to that, it'd be a mighty small-minded thing to wonder what the point of joy is, when you could just be managing an agent swarm to write more enterprise Go code.
Oh thats such a killjoy attitude. There is more to programming then "production", "shipping" and the overall corporate lala. You said it yourself, you get a lot of joy from designing your own programming language. And you know, even BEFORE AI it would have been unrealistic to see your langauge actually take off big time. So you answered your own question. Racket is likely not interesting to one of the big coprs. But you know, frankly, who cares? Some people use AI and have it write only 4 languages? Sure. Go ahead, and you know? Who cares? Let them have their monoculture. Such a sad sad sad comment.
behnamoh 20 minutes ago [flagged] [dead] | parent | context | unvouch | favorite | on: RacketCon Is Saturday
I'm curious: does anyone really care about Racket anymore? In general, does anyone really care about esoteric languages anymore?
With AI, we have converged on a set of languages. For the web, it's JavaScript or TypeScript. For backend, it's Go and Rust. Pretty much nothing else can get picked by AI if you start a new project. If you even like a language like Elixir, there seems to be less and less incentive to use it in production when AI can replicate a lot of its features in Rust for one-tenth of the cost and 10 times the speed of Elixir.
I'm saying this as someone who is designing a programming language, and for me, it's just a lot of fun, but I also know I should not hope for my language to take off anytime soon.
I think the Lisp family of languages are still the productivity boost they always were, especially with a good REPL. They can be as fast and safe as Rust and more expressive than JavaScript doing front end work. The deep support for macros and more really let you mold a program to fit the problem domain. Frontier models are reported to work as effectively with Lisp as any other language, and you can have much more succinct (token efficient) code while having more meaningful abstractions for readability by humans. I expect the two should go very well together.
Also, I wish your comment wasn't downvoted to oblivion. I'd hope there are other useful responses that people won't be able to view.
To add to this, I definitely wouldn't say we've converged on a set of languages in general either! Most of my backends are written in Scala of all things, and LLMs have no issue with it. If anything, the expressive type system is helpful for them.
> To add to this, I definitely wouldn't say we've converged on a set of languages in general either!
Absolutely agree. I’d take a guess that a decent chunk, if not majority of “business” applications probably still exist in either Django or Spring Boot. Should all of those be rewritten now “just ‘cause”?
OP is apparently working on a new language and would like some assurance that someone out there might take an interest in it someday. That doesn't sound unreasonable to me.
so-cal-schemer attempted to bypass HN moderation by reposting a flagged post in its entirety without waiting for the "vouch" process to complete.
Meanwhile, behnamoh's post was essentially dismissing the idea that we should discuss non-AI topics in the age of AI. His mention of his hobby project doesn't redeem a garbage comment.
What is the "vouch process", and where are the guidelines against quoting other users? I wanted to reply to a genuine question that was already marked "[dead]" (within 20 minutes of its posting).
I think you misconstrued behnamoh's comment, as he was literally asking a question about the role for Racket, not "essentially dismissing the idea that we should discuss non-AI topics".
"Which programming, scripting, and markup languages have you done extensive development work in over the past year, which do you want to work with over the next year, and which have you used AI tools or AI agents to work with? Select all that apply in each row."
For "which have you used AI tools or AI agents to work with", Rust and Go were only selected by ~11% of respondents. Whereas the usual functional languages were at ~1% or ~2%. I'd say the OP has a good point, but there is far less Rust and Go development with AI than he supposes.
Have you found LLMs to be good at metalinguistic abstraction? I have used them a little bit for lisp programming but never once have I seen them introduce macro.
I'd imagine they would require some hands-on guidance to create more meaningful abstractions and DSLs for humans.
Call it "vibe coding by tiller". Ha.
Also, I think of metalinguistic abstraction as something deeper than macros. At least not limited to macros:
"An important advantage of making the evaluator accessible as a Lisp program is that we can implement alternative evaluation rules by describing these as modifications to the evaluator program."
LLMs are able to write racket. I have a fairly large project I've been vibecoding for the last 6 months. Models predating deepseek flash 0731 used to make paren mistakes and had a hard time. But now Opus 5.5 for example does not make any mistake writing clear racket code.
Well, taking it to extreme why care about any other than machine code?
As AI programming tools improve, we will have the second coming from what 4 GLs, RUP, CASE tools, and Japan's Fifth Generation Computer Systems were trying to achieve, each on its own way as the next evolution on programming abstractions.
It's a common way to implement OO in Lisp-y languages. SICP has an example in chapter 3 (IIRC) of doing the same, but the selector had to be quoted as in:
Uses an internal lambda for dispatching on messages.
We can also create objects that handle deposits as well as withdrawals, and thus we can represent simple bank accounts. Here is a procedure that returns a “bank-account object” with a specified initial balance:
Each call to make-account sets up an environment with a local state variable balance. Within this environment, make-account defines procedures deposit and withdraw that access balance and an additional procedure dispatch that takes a “message” as input and returns one of the two local procedures. The dispatch procedure itself is returned as the value that represents the bank-account object. This is precisely the message-passing style of programming that we saw in 2.4.3, although here we are using it in conjunction with the ability to modify local variables.
Yo! this is cool. I've been doing an interpreted lisp written in OCaml. pricklypear.rocks. https://github.com/sroerick/pricklypear . we are doing cactus driven development. I'll reach out. Would love to compare notes.
It uses local HM inference and traits instead of OO, and the concurrency is based on concurrentML. The design process was mostly about what I dont like about other languages and what I think racket and OCaml does correctly. All default data structures are immutable (using an RRB tree, a champ, b+trees and linked lists) with pretty fast implementations.
Speed wise it is about the same as c# without spans and ref structs, since that is what it compiles to.
Every function that touches IO is compiles in a sync and async variant, so writing "bjoroutines" is most of the time the same as writing regular code.
The GitHub page is borked, since they removed Org mode support a day ago, but the manual and reference can be found on the web page.
Thank you. The only thing I really miss in c#/dotnet are delimited continuations. That would have made it possible to have proper effect handlers (now they are only tail resumptive, meaning it can only mock things like file system access and so on) and remove colour from the language entirely.
The colour situation is ok, but us still a bit rough wrt higher order functions.
I am not around the MSFT Partner CDs with the .NET Framework 1.0 release, however I remember there was a Scheme compiler as part of the original samples.
I am curious how. I thought quite a lot about targeting MSIL, but i found no way of copying, capturing or slicing the call stack. Nor is it possible to reify even the whole stack as a first class object.
For delimited continuations I only managed to find mostly extremely inefficient ways of doing it. CPS transformations on dotnet are, at least if kept to be useful as delcc, slow as molasses.
Which is ultimately why I chose to compile to c# to use asyncmethodbuilder do do the state machine translation for me.
In many ways I feel I should have targetted OCaml instead, since I would have gotten a full effect handler system and delimited continuations for free.
Now I am generating two bodies for every defun that touches any suspending function, using asyncmethodbuilder, meaning I don't get any of the runtimeasync benefits coming in dotnet11.
Hopefully they'll give us a new asyncmethodbuilder that is somewhat more constrained but guarantees runtime async.
For the curious, there is an official YouTube channel with the previous editions https://www.youtube.com/@racketlang/playlists (It usually take a few months until the videos are edited and uploaded.)
I'm curious: as a fan of Elixir and a language designer myself, what is the value of Racket and other esoteric languages, today, as (industry?) coalesces around AI tools and certain popular languages?
--------------------------
I think the Lisp family of languages are still the productivity boost they always were, especially with a good REPL. They can be as fast and safe as Rust and more expressive than JavaScript doing front end work. The deep support for macros and more really let you mold a program to fit the problem domain. Frontier models are reported to work as effectively with Lisp as any other language, and you can have much more succinct (token efficient) code while having more meaningful abstractions for readability by humans. I expect the two should go very well together. Plus you're dealing with a single language without the complexity of something like Rust or inconsistencies of JavaScript.
53 comments
[ 0.20 ms ] story [ 42.9 ms ] threadWith AI, we have converged on a set of languages. For the web, it's JavaScript or TypeScript. For backend, it's Go and Rust. Pretty much nothing else can get picked by AI if you start a new project. If you even like a language like Elixir, there seems to be less and less incentive to use it in production when AI can replicate a lot of its features in Rust for one-tenth of the cost and 10 times the speed of Elixir.
I'm saying this as someone who is designing a programming language, and for me, it's just a lot of fun, but I also know I should not hope for my language to take off anytime soon.
Things that aren't AI still matter and are still interesting.
I don't think this really applies to any of the benefits I've described there:
> AI can replicate a lot of its features in Rust for one-tenth of the cost and 10 times the speed
what a disaster we have ahead of us not because AI but because this kind of thinking
Of course, Lisps also seem to have the property of attracting people who genuinely like the practice of programming and, if it clicks with you, it has the property of generally leaving you really excited to write more of it. If you're hauling up and spending real American dollars to spend a weekend packed in a hall full of nerds to chat about a niche programming language, you're probably in that group. Consequent to that, it'd be a mighty small-minded thing to wonder what the point of joy is, when you could just be managing an agent swarm to write more enterprise Go code.
You can pick literally almost anything, and current models will be able to write it. I don't know how you arrived at that statement.
I'm curious: does anyone really care about Racket anymore? In general, does anyone really care about esoteric languages anymore?
With AI, we have converged on a set of languages. For the web, it's JavaScript or TypeScript. For backend, it's Go and Rust. Pretty much nothing else can get picked by AI if you start a new project. If you even like a language like Elixir, there seems to be less and less incentive to use it in production when AI can replicate a lot of its features in Rust for one-tenth of the cost and 10 times the speed of Elixir.
I'm saying this as someone who is designing a programming language, and for me, it's just a lot of fun, but I also know I should not hope for my language to take off anytime soon.
I think the Lisp family of languages are still the productivity boost they always were, especially with a good REPL. They can be as fast and safe as Rust and more expressive than JavaScript doing front end work. The deep support for macros and more really let you mold a program to fit the problem domain. Frontier models are reported to work as effectively with Lisp as any other language, and you can have much more succinct (token efficient) code while having more meaningful abstractions for readability by humans. I expect the two should go very well together.
Also, I wish your comment wasn't downvoted to oblivion. I'd hope there are other useful responses that people won't be able to view.
Absolutely agree. I’d take a guess that a decent chunk, if not majority of “business” applications probably still exist in either Django or Spring Boot. Should all of those be rewritten now “just ‘cause”?
The answer is "yes". Obviously people still care. No need to resurrect a dead bad post.
Meanwhile, behnamoh's post was essentially dismissing the idea that we should discuss non-AI topics in the age of AI. His mention of his hobby project doesn't redeem a garbage comment.
I think you misconstrued behnamoh's comment, as he was literally asking a question about the role for Racket, not "essentially dismissing the idea that we should discuss non-AI topics".
https://survey.stackoverflow.co/2026/technology/data/languag...
"Which programming, scripting, and markup languages have you done extensive development work in over the past year, which do you want to work with over the next year, and which have you used AI tools or AI agents to work with? Select all that apply in each row."
For "which have you used AI tools or AI agents to work with", Rust and Go were only selected by ~11% of respondents. Whereas the usual functional languages were at ~1% or ~2%. I'd say the OP has a good point, but there is far less Rust and Go development with AI than he supposes.
Call it "vibe coding by tiller". Ha.
Also, I think of metalinguistic abstraction as something deeper than macros. At least not limited to macros:
"An important advantage of making the evaluator accessible as a Lisp program is that we can implement alternative evaluation rules by describing these as modifications to the evaluator program."
https://sarabander.github.io/sicp/html/Chapter-4.xhtml
As AI programming tools improve, we will have the second coming from what 4 GLs, RUP, CASE tools, and Japan's Fifth Generation Computer Systems were trying to achieve, each on its own way as the next evolution on programming abstractions.
ALOE = Scheme + Smalltalk + Types
https://github.com/dharmatech/2026-09-02-aloe-racket
Prototype is in Racket.
We can also create objects that handle deposits as well as withdrawals, and thus we can represent simple bank accounts. Here is a procedure that returns a “bank-account object” with a specified initial balance:
Each call to make-account sets up an environment with a local state variable balance. Within this environment, make-account defines procedures deposit and withdraw that access balance and an additional procedure dispatch that takes a “message” as input and returns one of the two local procedures. The dispatch procedure itself is returned as the value that represents the bank-account object. This is precisely the message-passing style of programming that we saw in 2.4.3, although here we are using it in conjunction with the ability to modify local variables.3.1.1 Local State Variables
https://sarabander.github.io/sicp/html/3_002e1.xhtml#g_t3_00...
Here's a video demo of the code completion in vscode:
https://www.youtube.com/watch?v=YuIjug7elPY
SICP, for instance, uses a lot of utility functions to change it for readability sake:
and then,However. "Send, not apply" - sigh.. how shall I put it.. let's try this - eyes_rolling_so_hard_they_fall_out_of_sockets.png
Thank you!
https://bjolang.koketteriet.se/
It uses local HM inference and traits instead of OO, and the concurrency is based on concurrentML. The design process was mostly about what I dont like about other languages and what I think racket and OCaml does correctly. All default data structures are immutable (using an RRB tree, a champ, b+trees and linked lists) with pretty fast implementations.
Speed wise it is about the same as c# without spans and ref structs, since that is what it compiles to.
Every function that touches IO is compiles in a sync and async variant, so writing "bjoroutines" is most of the time the same as writing regular code.
The GitHub page is borked, since they removed Org mode support a day ago, but the manual and reference can be found on the web page.
The colour situation is ok, but us still a bit rough wrt higher order functions.
https://news.microsoft.com/source/2001/10/22/massive-industr...
I am not around the MSFT Partner CDs with the .NET Framework 1.0 release, however I remember there was a Scheme compiler as part of the original samples.
So maybe target MSIL directly.
For delimited continuations I only managed to find mostly extremely inefficient ways of doing it. CPS transformations on dotnet are, at least if kept to be useful as delcc, slow as molasses.
Which is ultimately why I chose to compile to c# to use asyncmethodbuilder do do the state machine translation for me.
https://www.jot.fm/issues/issue_2004_10/article4
I thought otherwise given my recollection of the samples, and that the platform supports C++, thus quite flexible on the opcodes.
Now I am generating two bodies for every defun that touches any suspending function, using asyncmethodbuilder, meaning I don't get any of the runtimeasync benefits coming in dotnet11.
Hopefully they'll give us a new asyncmethodbuilder that is somewhat more constrained but guarantees runtime async.
I'm curious: as a fan of Elixir and a language designer myself, what is the value of Racket and other esoteric languages, today, as (industry?) coalesces around AI tools and certain popular languages?
--------------------------
I think the Lisp family of languages are still the productivity boost they always were, especially with a good REPL. They can be as fast and safe as Rust and more expressive than JavaScript doing front end work. The deep support for macros and more really let you mold a program to fit the problem domain. Frontier models are reported to work as effectively with Lisp as any other language, and you can have much more succinct (token efficient) code while having more meaningful abstractions for readability by humans. I expect the two should go very well together. Plus you're dealing with a single language without the complexity of something like Rust or inconsistencies of JavaScript.
I wonder what the status of Carp is -- a Lisp with a borrow checker:
https://github.com/carp-lang/Carp
And I'm not a React developer, but it always struck me as something a Lisp hacker would come up with.