One other wrinkle is laziness by default. There are good reasons the language was done that way and strict isn't inherently better. In fact you'd give up a lot moving to a strict by default / laziness optional language. That said, laziness can make it hard to reason about performance. Experienced Haskell devs can do this but it still requires a lot of mental effort.
I suspect these two items are the primary ones. There are others. But I absolutely love the language even if I have never had the opportunity to use it professionally.
- Embedded toolchain and/or HAL/register map for my MCU family or CPU arhitecture
- A GUI library and/or basic I/O interaction library (keyboard/mouse to start)
- A GPU interaction library
- A web framework (Not going to roll my own DB interface, auth, user system, router, template system etc)
(Etc). I.e., some core library which handles the drudgery I can build my application on. If this is what you're getting at, this suggests a plan of attack!- Copilot (by NASA)
- MicroHs — for running Haskell on an MCU
GUI library and/or basic keyboard/mouse I/O:
- Monomer
- sdl2
- gi-gtk4
GPU interaction library
- OpenGL bindings
- vulkan bindnigs
- Accelerate — numerical GPU computation with an NVIDIA backend.
Web framework with database access, auth, users, routing, and templates:
- IHP
- Yesod
I think that is an unfair characterization of the video, based on the rest of your comment. Simon Peyton Jones makes a graph with two dimensions, useful/useless and safe/unsafe. The question he gets at is: how can one distinguish between effectful and effect-free computations in a programming language? He proceeds to characterize most useful languages as unsafe, and Haskell as useless but safe. He then spends the majority of the video talking about how useful languages are becoming safer, and at the same time how Haskell must become useful.
The famously friendly "Learn You a Haskell" book features its first "helloworld" program deep into the middle of the book, _after_ functors and (if I recall correctly) monads. It takes a very special beginner programmer to push that far through, working in the REPL, before they can write programs that do basic I/O.
I teach functional programming to college sophomores and juniors, and I would love to teach them Haskell. But I have to meet them where they are, and it would be difficult to do in Haskell. This is why we have taught either F#, Scala, or LISP over the years. F# in particular has a lot of the aesthetic qualities of Haskell while allowing impurity or mutability escape hatches without too much trouble. If somebody has truly beginner-friendly Haskell resources, I would love to hear about it-- I'm apparently not smart enough to chart that path myself.
It is important to clearly understand that Simon uses the word "useless" in the sense of having no side-effects on the external world i.e. if state changes are not reflected in the external world at some point then there is no practical purpose to it and hence "useless".
Functional languages solved this by using the type system at different levels to combine both effectful and effect-free computations cleanly.
Haskell can 100% be used to create all of these kinds of apps.
I think this article tries to figure out where can Haskell be the best.
As for a platform? If Haskell can offer the most secure, correct, and trusted web apps(the biggest platform), created with the help of LLM's, and they can use LLM's to make reading Haskell intuitive, that's a good place.
...
> Haskell surely needs good DX, but it also needs really better reasons for existing.
Man am I tired of people dropping negative crap like this any time Haskell comes up, especially when they end up at the top of the comments. It ends up derailing most conversations about Haskell that aren't on explicitly Haskell-focused forums, and turns every post on Haskell elsewhere into a referendum on the language itself. FFS the post itself is explicitly about polishing up the technical infrastructure _to achieve what you're complaining Haskell doesn't have_ and all you can do is shit on Haskell in response: "We want to improve the developer experience!" You: "No one wants to use Haskell because the developer experience is so shit!"
Put your money where your mouth is and do the polishing you're complaining about if you actually give a shit about Haskell. Fucking make something! Nothing is stopping you. Haskell is useful right now. I have personally been building a home automation system for it that uses Lua, MQTT, STM, and more that I have been running nonstop in my home for literally years now and it's absolutely awesome to work on and it's rock solid--partially because Haskell does an amazing job of helping me avoid bugs and provides a wonderful refactoring experience, which is a huge part of its reason for existing thank you very much.
All comments like yours do is dissuade others from taking a look at the Haskell ecosystem by implying it's a pointless language; it steers people away, as the main takeaway is that you can't actually build stuff in Haskell and so why would you want to use a language that you can only build CLI apps in? (Absolute bullshit btw.) As someone that cares about Haskell and spends my time actually building stuff with it, I just read posts like this and shake my head. You absolutely can use Haskell to make things, and insofar as Haskell doesn't get used (distinct from being useless) and has a ton of sharp unpolished edges remaining, it's the fault of posts like yours as much as anything. Either get involved or give it a rest and go use the other languages you seem to prefer. You aren't treading new ground with this comment.
Sorry to swear so much but that really pissed me off