upvote
> There is this memo video of S. P. Jones that famously says "Haskell is Useless".

I think that is an unfair characterization of the video and the intent of Haskell's co-creator, 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.

https://youtu.be/iSmkqocn0oQ

reply
I've loved this video for years, primarily because of SPJ's willingness (and excitement, even) to talk about Haskell's shortcomings. I think SPJ and other important people in the Haskell community are keenly aware that Haskell appeals to a specific demographic and that, to survive as more than just a research plaything, that they need to broaden participation.

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.

reply
Great video! Thanks for the link.

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.

reply
> It could be used to create apps for desktop, mobile, and web

Haskell can 100% be used to create all of these kinds of apps.

reply
But expect to be in pain when not web.
reply
It's really hard to be the best at every platform, and at every problem area. Especially at the start. But once you have dominance in some niche, that may give you the power/possibility to dominate other niches.

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.

reply
> Functional programming should not be viewed as a tuxedo that we dust off and use when we want to be "fancy programmers." It's simply a tool in the toolbox.

https://news.ycombinator.com/item?id=15486063

reply
It sounds like it needs foundational libraries? Or is it something else. For example, almost everything I write requires one or more of:

  - 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!
reply
Embedded toolchain and/or HAL/register map:

- 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

reply
Pretty sure those all exist; e.g. at work we use Yesod and Servant, which are a couple of Haskell web frameworks.
reply
whats holding you back? buy claude pro and make it reality, hell im gonna give it try because your comment offends me
reply
So what's missing? GUI libraries?
reply
Nothing is really missing, Haskell can do all of that.
reply
I thought so. What's the reason for the PR problem, then?
reply
I can only speak from my own experience, but expressing a program as a composition of pure functions, where effects are carefully managed, is a challenging way of thinking at first. The imperative approach really is simpler to wrap one's head around _until you start worrying about correctness_. I think many developers never really care that deeply, so Haskell never appeals to them. You really do have to take a mathematical approach to program construction. I personally think that the mathematical perspective is liberating, but it's not an easy one to cultivate.
reply
deleted
reply
deleted
reply
deleted
reply