Rendered at 11:36:42 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
yjftsjthsd-h 19 hours ago [-]
> THC now implements every one of GHC 9.14.1’s prim-ops and provides a JIT for GHC Core that runs Haskell on the JVM
Look, it's very cool and a great project, but I just don't think you should call the compiler "turbo $something" if you're not going to make it a TUI IDE.
Only tangentially related, but I'm reminded of Frege[0], a Haskell dialect for the JVM that I stumbled across at one point and thought looked really cool.... I see recent commits but the releases are all really old, so I can't tell what the state of the project is.
I hadn't thought of Fregue in some years! I helped them with their logo and some smaller issues back in the time. I will check out the latest commits to see what's being updated (hopefully not only dependabot:) ).
JSR_FDED 19 hours ago [-]
An IDE is just a DE in the category of blue TUIs.
woadwarrior01 1 days ago [-]
The polyglot FFI feature (thanks to GraalVM) might be very useful for implementing "functional core, imperative shell" style designs.
zerr 21 hours ago [-]
I was expecting some Turbo Vision based TUI IDE.
draven 1 days ago [-]
FYI the article links a discussion on Reddit, which has answers for several comments made here.
Can someone familiar with Haskell ecosystem and the current state of things explain the rationale behind this project? Thanks.
fouc 1 days ago [-]
like Turbo Pascal?
quchen 1 days ago [-]
Part of the name was a joke about people often mishearing Haskell as Pascal, Ed told me a couple of years ago. I think it might have been at ZuriHac back when it was at Google Zurich, so 2016-ish?
vintermann 1 days ago [-]
I think the other part of the name is a cannabis joke.
edwardkmett 17 hours ago [-]
The THC thing was actually unintentional at first. It matched the Borland naming convention for the compiler name and it matched up with GHC.
Now picking CBD for the compressed Core Binary Distribution format we use? That? That was gratuitous.
davidkunz 1 days ago [-]
I read it as "Turbo Hascal"
TurboHaskal 1 days ago [-]
You are not alone.
atarv 1 days ago [-]
[flagged]
bmacho 1 days ago [-]
No it's a not blue TUI IDE but a Haskell on JVM. Author wasted that concept :|
And it has to weigh in under 1 MB and have sub-second compilation times.
bmacho 1 days ago [-]
Since there is MicroHS Haskell compiler in 0.5 MB space nothing is stopping people to wire it together with TurboVision/ncurses. Apart from that the name is taken now.
1 days ago [-]
edwardkmett 17 hours ago [-]
Compile times are ... not quite there yet.
kitd 1 days ago [-]
Odd that the FFI list didn't include Java given the JVM target. Typo or oversight?
edwardkmett 17 hours ago [-]
Java FFI can be done, it is just on the messier end of the spectrum. I do a little bit of it as needed, but I've focused in on Polyglot languages for now, and deferred a lot of the hooks for nicely handling it to later work.
Talking about Java FFI invites you to say 'well then smart-ass how do you extend this Java class/interface over here with code written in your language' and frankly, that has never had a satisfying answer for any language that isn't Java.
But today you can pass Haskell Data.Text out through the FFI binding framework and it shows up on the other side as a valid TruffleString, in UTF-8 with zero copy semantics and if any Truffle language passes in a TruffleString that is UTF-8 encoded it gets unwrapped into Data.Text using the same.
That and some array support is pretty much enough to talk to everybody else.
gf000 22 hours ago [-]
I believe it's just not FFI towards Java byte code, since it's the "native".
But of course as a Truffle language it gets "free" java interop
classified 24 hours ago [-]
> ...that runs Haskell on the JVM.
Why not call it Jaskell then?
ch4s3 22 hours ago [-]
I’d have gone with Hava.
classified 22 hours ago [-]
Shorter is better.
ch4s3 20 hours ago [-]
I also like the ambiguity around whether or not you pronounce the H.
classified 18 hours ago [-]
Of course you do, because that makes it sound like the Hispanic pronunciation of Java.
ch4s3 18 hours ago [-]
Unless you speak Spanish and then it would sound like Ava, which is conveniently not a word already.
classified 5 hours ago [-]
Oops? When I ask Google Translate to pronounce Java in Spanish, I can hear the H. Is that wrong?
24 hours ago [-]
asplake 1 days ago [-]
Odd — server can't be found
dzonga 21 hours ago [-]
now that there's all the rage about agentic coding - & languages don't matter - why r people not migrating to more less error prone languages like Haskell ?
epgui 20 hours ago [-]
Anecdotally, I’ve found Claude-generated Haskell code to be almost as bad (hard to read) as Claude-generated python.
I have no doubt the haskell compiles… but when it comes from an LLM it reads like nonsensical code soup.
Claude-generated Clojure seems a lot better.
tikhonj 20 hours ago [-]
I've had much better experiences with Haskell (well, mostly PureScript for now) than Python, but that might be because I am very hands-on with the design of the core types and abstractions I'm working with.
Having an effect system so that Claude is not tempted to throw in side-effects everywhere helps a lot too!
epgui 19 hours ago [-]
Yes, undoubtedly.
(For further context, I was comparing essentially vibe code across languages. Vibe-coded Clojure stood out as much less unpalatable than anything else I tried.)
pawelmurias 21 hours ago [-]
Agents write code in popular languages better.
rspeele 18 hours ago [-]
The pre-LLM popularity of languages remains sticky because it influences what libraries are available, the sophistication of the tooling, and of course, sticky developer preferences. So while the playing fields may shift a little, it resembles what came before. Also, in my circles I've noticed it's very easy for us to rationalize why our previous favorite language is also the perfect language for the agent era.
If your favorite language before was Python, why, LLMs are fluent in it! So much training data! So many libraries! Home of machine learning! None of that pesky compile time, agents don't need compile time safety anyway, they write such good test coverage! It's The Perfect Agentic Coding Language.
If it was Rust, by jove, an agent can easily handle the headache of satisfying the borrow checker, and now you get the best of all worlds! Safety! Near-C runtime performance! Abstractions! The only reason people didn't use Rust before was it was Too Hard and there were Too Many Furries and now it's not hard and you don't have to interact with them, so get on board. It's The Perfect Agentic Coding Language.
If it was Golang, oh my goodness, what a choice. Pretty fast compile time and pretty fast runtime. Agents get a tight feedback loop with build->run->test->edit. Not very complicated, code has to be written in a straightforward banging-rocks-together way. Good stable ecosystem! Rob Pike designed the language for people he said were "not capable of understanding a brilliant language but we want to use them to build good software." That's an arrogant, demeaning way to describe your colleagues but if they're LLM agents it's dead on! It's The Perfect Agentic Coding Language.
I could go on and on. I'm not immune either! My own favorite language is F# and I play the same game:
It has access to the .NET ecosystem like C#, but I don't have to constantly remind the agents to prefer a style with immutable data and pure functions, they idiomatically do that in F#. Files have to be in order and can only refer to symbols defined "earlier" in order, if you want mutually-referential types or functions they have to be declared as such in a joint statement, so spaghetti is hard to create: each project's codebase naturally ends up in a layered bottom-to-top architecture. The language is terse enough to be token efficient, without being symbol soup. FSX scripts can be generated during agentic code reviews to demonstrate repros for discovered issues. If there's any type of code that still warrants me jumping in and writing some myself, that code would be data type definitions/domain modelling, and F# is a joy to write those in. It's The Perfect Agentic Coding Language.
Gimpei 21 hours ago [-]
Because languages don’t matter so why bother.
vocatan 2 days ago [-]
Avast blocks the site from being loaded.
throwaway81523 1 days ago [-]
It's a Haskell to JVM compiler repurposing some parts of GHC. Pretty cute but evokes "why?".
throwway262515 1 days ago [-]
The proper rejoinder to which is "why not?"
1 days ago [-]
therepanic 1 days ago [-]
around 4k commits in a week.
i am not sure anyone actually understands what is going on under the hood of the project. looks like average slop.
>> Exactly a week ago (as a joke), I started writing THC,
you? i hope you have read at least something of what your agent wrote about the project.
rsrsrs86 1 days ago [-]
Kmett is a legend in Haskell. He writes and maintains tens of libraries - since the 2000s. Even before LLMs, Kmett had an output like most of us can do only with LLMs. Seriously, the guy is a coding machine.
vintermann 1 days ago [-]
Edward Kmett is a very respected Haskell developer.
therepanic 1 days ago [-]
i see, but my statement does not become false because of it. his agent pushes several commits an hour in a continuous loop, meaning this respected developer is not involved in the process at all.
draven 1 days ago [-]
The article gives a link to the discussion on Reddit. In it, Edward says
"I actually did pretty much gave up sleep for a week. That said there are a few hour stretches here and there where I leave it on mostly cleanup tasks and doze off. you can find a couple of 2-3 hour breaks where it got hung up on approval while I was lights out. "
shae 18 hours ago [-]
I worked with Edward Kmett for a few years.
He wore out the vim movement keys on a mac laptop keyboard in four months.
By "wore out" I mean he had worn the plastic down to the keyswitches, in FOUR MONTHS.
We once had an emergency production outage and Kmett got more productive as he stayed up later. At about 36 hours he fixed the problem. I fell over asleep, he fixed other problems he'd found during the investigation.
I have lots more Ed stories, but this output you question does not surprise me.
bmacho 18 hours ago [-]
> I have lots more Ed stories
Please continue telling them
jerf 22 hours ago [-]
I briefly worked with him personally. He is 1. a perfectionist and 2. equipped with the intellectual and programming firepower to not get stuck in the resulting paralysis that a lot of people get stuck in but blast through tasks that should be impossible to do at all, let alone with a high degree of quality, successfully, through sheer intellectual firepower. The end result is that he is well known for already having not just one incredible Haskell library, but a number of them.
I can promise you he will not produce and release "slop". He would be an order of magnitude more offended at the idea than you are, I'd imagine.
edwardkmett 16 hours ago [-]
Long time no see!
In the original commenter's defense, I _did_ let the agents I have working on this get a more than a bit test harness crazy back when I was able to use GHC itself as a behavioral oracle. That worked fine through the initial build out, but then it rushed ahead with a broken CI due to misalignment in priorities, and then kept piling fixtures on top of fixtures and didn't properly track their cross-dependencies. My work on this in the last 48 hours has mostly been about getting that part under control and stable across my target platforms so I have better bedrock to build atop.
ddellacosta 20 hours ago [-]
> not just one incredible Haskell library, but a number of them
...and this still understates his impact on Haskell, he helped shape how a lot of programs are written in Haskell through some of the stuff he worked on (see e.g. https://stackoverflow.com/a/2769840 as evidence of his influence on core functionality).
therepanic 20 hours ago [-]
in that case it is truly amazing, because I have never seen anyone even with current ai capable of being so productive and truly understanding what they are putting out.
solomonb 20 hours ago [-]
Ed Kmett is one of the smartest people I have ever met in my life. He is quite literally built different.
He completed undergrad and graduate programs in math, computer science, and a special program in ai all simultaneously in 3 years. I believe he was finishing programs before his scholarships could kick in.
4b11b4 23 hours ago [-]
Sit down
gojogs 21 hours ago [-]
It's a fun project without bad intentions. Crucify someone else for using AI. Your comment serves only selfish purposes.
Look, it's very cool and a great project, but I just don't think you should call the compiler "turbo $something" if you're not going to make it a TUI IDE.
Next?
https://haskell.foundation/podcast/87/
[0] https://github.com/frege/frege
https://www.reddit.com/r/haskell/comments/1wu24oe/turbo_hask...
Now picking CBD for the compressed Core Binary Distribution format we use? That? That was gratuitous.
Talking about Java FFI invites you to say 'well then smart-ass how do you extend this Java class/interface over here with code written in your language' and frankly, that has never had a satisfying answer for any language that isn't Java.
But today you can pass Haskell Data.Text out through the FFI binding framework and it shows up on the other side as a valid TruffleString, in UTF-8 with zero copy semantics and if any Truffle language passes in a TruffleString that is UTF-8 encoded it gets unwrapped into Data.Text using the same.
That and some array support is pretty much enough to talk to everybody else.
But of course as a Truffle language it gets "free" java interop
Why not call it Jaskell then?
I have no doubt the haskell compiles… but when it comes from an LLM it reads like nonsensical code soup.
Claude-generated Clojure seems a lot better.
Having an effect system so that Claude is not tempted to throw in side-effects everywhere helps a lot too!
(For further context, I was comparing essentially vibe code across languages. Vibe-coded Clojure stood out as much less unpalatable than anything else I tried.)
If your favorite language before was Python, why, LLMs are fluent in it! So much training data! So many libraries! Home of machine learning! None of that pesky compile time, agents don't need compile time safety anyway, they write such good test coverage! It's The Perfect Agentic Coding Language.
If it was Rust, by jove, an agent can easily handle the headache of satisfying the borrow checker, and now you get the best of all worlds! Safety! Near-C runtime performance! Abstractions! The only reason people didn't use Rust before was it was Too Hard and there were Too Many Furries and now it's not hard and you don't have to interact with them, so get on board. It's The Perfect Agentic Coding Language.
If it was Golang, oh my goodness, what a choice. Pretty fast compile time and pretty fast runtime. Agents get a tight feedback loop with build->run->test->edit. Not very complicated, code has to be written in a straightforward banging-rocks-together way. Good stable ecosystem! Rob Pike designed the language for people he said were "not capable of understanding a brilliant language but we want to use them to build good software." That's an arrogant, demeaning way to describe your colleagues but if they're LLM agents it's dead on! It's The Perfect Agentic Coding Language.
I could go on and on. I'm not immune either! My own favorite language is F# and I play the same game:
It has access to the .NET ecosystem like C#, but I don't have to constantly remind the agents to prefer a style with immutable data and pure functions, they idiomatically do that in F#. Files have to be in order and can only refer to symbols defined "earlier" in order, if you want mutually-referential types or functions they have to be declared as such in a joint statement, so spaghetti is hard to create: each project's codebase naturally ends up in a layered bottom-to-top architecture. The language is terse enough to be token efficient, without being symbol soup. FSX scripts can be generated during agentic code reviews to demonstrate repros for discovered issues. If there's any type of code that still warrants me jumping in and writing some myself, that code would be data type definitions/domain modelling, and F# is a joy to write those in. It's The Perfect Agentic Coding Language.
i am not sure anyone actually understands what is going on under the hood of the project. looks like average slop.
>> Exactly a week ago (as a joke), I started writing THC,
you? i hope you have read at least something of what your agent wrote about the project.
He wore out the vim movement keys on a mac laptop keyboard in four months.
By "wore out" I mean he had worn the plastic down to the keyswitches, in FOUR MONTHS.
We once had an emergency production outage and Kmett got more productive as he stayed up later. At about 36 hours he fixed the problem. I fell over asleep, he fixed other problems he'd found during the investigation.
I have lots more Ed stories, but this output you question does not surprise me.
Please continue telling them
I can promise you he will not produce and release "slop". He would be an order of magnitude more offended at the idea than you are, I'd imagine.
In the original commenter's defense, I _did_ let the agents I have working on this get a more than a bit test harness crazy back when I was able to use GHC itself as a behavioral oracle. That worked fine through the initial build out, but then it rushed ahead with a broken CI due to misalignment in priorities, and then kept piling fixtures on top of fixtures and didn't properly track their cross-dependencies. My work on this in the last 48 hours has mostly been about getting that part under control and stable across my target platforms so I have better bedrock to build atop.
...and this still understates his impact on Haskell, he helped shape how a lot of programs are written in Haskell through some of the stuff he worked on (see e.g. https://stackoverflow.com/a/2769840 as evidence of his influence on core functionality).
He completed undergrad and graduate programs in math, computer science, and a special program in ai all simultaneously in 3 years. I believe he was finishing programs before his scholarships could kick in.
How can you tell?