The thought crosses my mind that Haskell may be uniquely suited for AI coding using a very small context window (cheap). Haskell encourages small functions and no global state. So you may be able to capture all the relevant context for editing a Haskell function within a few hundred or few thousand tokens. That would be better than some other languages. Plus the strong typing could help AI agents catch errors.
I have not played around with it to see how that plays out with agentic coding. But it does seem like an interesting idea.
As someone who loves Haskell more than any other language, some challenges are
- the tooling is decades behind, say, Rust or Go
- finding the right library in looks very different in Haskell--you frequently start with the signature on Hoogle. Agents can learn this but it's not the same as "web search"
- creating the right solution also looks different. It's usually borne out of thinking about the types and coming up with the correct algebra. Again models can probably learn to create the right types and orient the solution around that, but it's not automatic
- same today as yesterday, laziness is a blessing and a curse. The runtime can do unpredictable things when you suddenly evaluate a deep thunk
- GHC directives effectively mean there are multiple "Haskells"
Some of those are a result of the "avoid success at all costs" mantra. You can't shake that off in a day. It will take a concerted effort to make it more amenable for seamless adoption.
Haskell continues to be my favorite language to write and read, but Rust is the more practical language with a rich type system. If you're looking for something approaching Haskell's expressiveness but with fewer of these issues, check out PureScript.
No way tooling is decades behind. You have a decent LSP, debugger, package manager and REPL.
Laziness is hard to observe, maybe Strict and StrictData would become more popular in use within this context.
I haven't checked in a while now if effects have become the norm in the ecosystem, or if some solution exists for "string" types, but for me all of Haskell's expressivity is lost in the noise of endless conversion function, wrapper types when stacking monads, and import fiddling.
I can see how agent coding is a nice fit for Haskell, since LLM's tend to be best at tasks where you can easily verify the output – and GHC lets you easily verify much more of your domain than say Python (sure you can test some of what dynamic typing doesn't catch, but LLM-written tests do not always do what you think they should[0]). At the same time, the LLMs tend to not code golf unless asked to, and they don't care if they have to wait for dependencies to compile, so that takes away the two major Haskell time sinks.
As an intermediate Haskell programmer, I’ve found that using AI to debug or learn Haskell is a better use of time than generating a lot of code with it.
Even without AI most of my Haskell time is spent thinking.
Also, I hand writing Haskell is one of my small after work pleasures.
I suspect that the compact nature of the syntax would require more tokens spent "thinking" to get decent results. It might be more efficient for simple code though. Either way worth testing. Surely someone must've set up a "how well LLMs handle Xlang" benchmark suite.
Yup, it was mostly pleasure AI coding a company codebase in Scala. I'm considering it for next projects for this reason although my understanding and intuition for Scala code is much weaker than for Python.
"The principal goal is to dedicate most of the Foundation’s financial resources to technical work.....
To make this possible, the Haskell Foundation will remain without an executive director for the foreseeable future.
Instead of having a full-time employee in charge of fundraising, events, coordination, mediation and much more, we will split these responsibilities between the Board and a new, part-time role dedicated to the Haskell Foundation’s financial sustainability."
Nice to see continued investment in the Haskell ecosystem. Long-term sustainability for niche but highly influential programming languages is incredibly important for the broader software community.
He doesn't have a role at Facebook anymore AFAIK, although I can't find the source now. I remember hearing it was mostly due to filtering engine at Facebook being rewritten in Hack, so they don't have the need for Haskell people anymore.
You can use the GHC musl container: benz0li/ghc-musl:9.8.4 to create static binaries. I've specialized that into -arm64 and -amd64 containers for forgejo actions.
Anytime I push to my Haskell repos my actions automatically create static binaries for installation on my nodes.
Cross compilation could definitely be easier :-/ I tend to just use github actions and compile from whatever architecture it should run on, so that's a workaround. I long for a day when I can just `cabal build --platform=amd64` etc. and it Just Works without having to download and compile a horde of foreign libs or set up a vm
I can only think of memory usage during compilation. That’s why I had to precompile binaries, which means cross-compile. Then if you add cross-OS, bundling a properly linked or statically linked binary is not that easy.
I found Haskell too difficult. They focus on a specific niche, so they won't be a mainstay programming language anyway, but even then when you ask people what are the real innovations or success stories per given year, say, 2025 or 2026, they almost never mention Haskell.
I don't mean to sound elitist, but in a way, Haskell's difficulty is kind of the point of the language.
The thing that's so elegant about Haskell is that it allows you to express programmatic constructs at a very abstract level. Abstraction is almost by definition difficult to grasp. That's why it takes a decade and a half for (most) people to go from arithmetic to calculus.
this sounds like a nice non prescriptive direction. jose is a pretty cool dude. pre covid we theoretically were gonna poke a defining a memory model of ghc haskell c— / hs / core , but life intervened
I have not played around with it to see how that plays out with agentic coding. But it does seem like an interesting idea.
- the tooling is decades behind, say, Rust or Go
- finding the right library in looks very different in Haskell--you frequently start with the signature on Hoogle. Agents can learn this but it's not the same as "web search"
- creating the right solution also looks different. It's usually borne out of thinking about the types and coming up with the correct algebra. Again models can probably learn to create the right types and orient the solution around that, but it's not automatic
- same today as yesterday, laziness is a blessing and a curse. The runtime can do unpredictable things when you suddenly evaluate a deep thunk
- GHC directives effectively mean there are multiple "Haskells"
Some of those are a result of the "avoid success at all costs" mantra. You can't shake that off in a day. It will take a concerted effort to make it more amenable for seamless adoption.
Haskell continues to be my favorite language to write and read, but Rust is the more practical language with a rich type system. If you're looking for something approaching Haskell's expressiveness but with fewer of these issues, check out PureScript.
Laziness is hard to observe, maybe Strict and StrictData would become more popular in use within this context.
I haven't checked in a while now if effects have become the norm in the ecosystem, or if some solution exists for "string" types, but for me all of Haskell's expressivity is lost in the noise of endless conversion function, wrapper types when stacking monads, and import fiddling.
If only Rust had something like GHCi.
Stack and Cabal have longer history than cargo, and Stackage for puzzle dependencies.
> - GHC directives effectively mean there are multiple "Haskells"
A bit like macro libraries and what features are enabled where in Rust
No way. Where vibe-coded Rust contains tons of "unsafe", you can have your vibe-coded Haskell sprinkled with "unsafePerformIO" and "unsafeCoerce" ;)
* https://github.com/digitallyinduced/ihp/ is mainly written with Claude now
* https://jappie.me/haskell-vibes.html is gushing over agent-written Haskell
* https://discourse.haskell.org/t/anti-llm-sentiment-considere... huge thread about the divisiveness of LLM's from some person who loves using them with Haskell
I can see how agent coding is a nice fit for Haskell, since LLM's tend to be best at tasks where you can easily verify the output – and GHC lets you easily verify much more of your domain than say Python (sure you can test some of what dynamic typing doesn't catch, but LLM-written tests do not always do what you think they should[0]). At the same time, the LLMs tend to not code golf unless asked to, and they don't care if they have to wait for dependencies to compile, so that takes away the two major Haskell time sinks.
[0] https://haskellforall.com/2026/05/type-out-the-code#:~:text=...
Even without AI most of my Haskell time is spent thinking.
Also, I hand writing Haskell is one of my small after work pleasures.
To make this possible, the Haskell Foundation will remain without an executive director for the foreseeable future.
Instead of having a full-time employee in charge of fundraising, events, coordination, mediation and much more, we will split these responsibilities between the Board and a new, part-time role dedicated to the Haskell Foundation’s financial sustainability."
Sounds a great move in principle.
He also reflected on his time and Haskell usage at Facebook here: https://www.youtube.com/watch?v=gEWBHP0PvRw&list=PLQpeDZt0_x...
Slow build times, deployment to Linux when developing on macos still pain. Deployment is pain specially on commodity VPS.
Go is very easy to cross compile and deploy.
But Haskell is better for a few things, but I've hardtime deploying it
Anytime I push to my Haskell repos my actions automatically create static binaries for installation on my nodes.
It's almost a one-liner + a nix derivation import, works within a minute on incremental builds even on large projects: https://input-output-hk.github.io/haskell.nix/tutorials/cros...
Oh? Why is that?
The thing that's so elegant about Haskell is that it allows you to express programmatic constructs at a very abstract level. Abstraction is almost by definition difficult to grasp. That's why it takes a decade and a half for (most) people to go from arithmetic to calculus.
Are people targeting it as a runtime for Haskell as well?