Hacker News new | ask | show | jobs
by resoluteteeth 1651 days ago
This felt a bit off but the note at the bottom explains it:

> As one might have guessed, this is not an essay. It's a transcript of the following talk by R. Martin with some substitutions made (SmallTalk -> Haskell, Ruby -> Rust, and others). You are free to make any conclusions from this.

If there's a thing that has arguably "killed" haskell and could potentially kill rust too it's probably not this but rather packages bifurcating into a million different incompatible implementations of everything because so little is in the standard library.

1 comments

“… but rather packages bifurcating into a million different incompatible implementations of everything because so little is in the standard library.”

This was my problem. I played with Haskell some. I actually liked it quite a bit, but I just couldn’t force myself to program in it. I’m so used to Java where you have a huge standard library. Even without that I’ve done PHP or python where the standard libraries were quite good.

Haskell felt like a giant step back. And I know there are reasons for the way it ended up. And in many ways that makes sense. But even if you ignore all the functional programming stuff that’s new for many people it’s an incredible pain to get started in Haskell because of the lack of standard library and the huge number of extensions.

And if you ask around you find out that lots of people don’t use Haskell without like 12 different extensions turned on. And then you have to use _these_ libraries to get anything done.

And that’s before you get into the religious wars over if you should be using lenses or some other thing.

As a new user, my preference would be this:

1. Stop pretending GHC isn’t Haskell. For all intents and purposes it is the one and only implementation that matters. Just like PHP, Ruby, and Go have canonical implementations. Bonus points for renaming GHC to Haskell.

2. Bring all the modern stuff people expect into the standard library. I’m sorry it’s been way too long to remember what’s missing, but I’m sure people who are active in the community know what the “must use“ libraries are.

3. Language extensions are for academics. There’s nothing wrong with having them, but you shouldn’t need to mess with any of it to write good apps. Figure out what should be on by default, compile it in. No normal programer should have to mess with them.

I feel like fixing those three things would make the language 100 times more approachable. I don’t think it would ever happen, too many people would have to agree on too many things. But I just don’t see Haskell ever going anywhere without it. The same way I don’t see Emacs ever becoming a “normal“ program that people use without lots of changes.

It’s OK if you want to stay “obscure“ because you like the way things are done. But don’t expect to take over the world.

> But don’t expect to take over the world.

"Avoid success at all costs" is the Haskell motto, so...

> Bring all the modern stuff people expect into the standard library.

GHC already ships with lots of these, they're just not in the base package. You might find Relude [0] more to your liking?

> Language extensions are for academics.

GHC2021 happened and mostly alleviates this! But it's now one language extension that turns on everything that most people (on the committee) think everyone is fine with. We're not really going to see it becoming built-in without a new Haskell standard, and that (Haskell Prime) fizzled out due to lack of time from the committee members.

[0]: https://hackage.haskell.org/package/relude-1.0.0.1

It is 'avoid "success at all costs"' meaning success is good but must be balanced against other priorities.
That’s good to hear. It’s been a few years since I played with Haskell. I know some of it was in the works. Nice to know it came to fruition.
These are all valid criticisms in a way, but not really of the Haskell language. You could literally fix all of these issues with a custom prelude and a .cabal file to enable default extensions.

There are a lot of project templates already existing that do this btw.

I think it isn't a big issue to most Haskell users because it's really only an issue when starting up new projects, which isn't what programmers are doing most of the time.

You’re right. They’re all environment problems. But they frustrate and confuse the newbie (like me).