4 ms·
I’ve been through the Haskell learning curve. Long story short it’s awful and in my opinion not worth the pain. I think Haskells problems breakdown into 3 dist
by bnchrch 6y ago
I’ve been through the Haskell learning curve. Long story short it’s awful and in my opinion not worth the pain.
I think Haskells problems breakdown into 3 distinct areas. The community, the conventions and the language itself.
Firstly the community can be hostile to a new comer. The documentation and tutorials for various libraries is often incomplete, outdated and written in a hard to grok plain text document. Asking questions can also be painful as there’s definitely a tinge of elitism to some of the power members.
Secondly, the conventions that are often encouraged go against writing clear and understandable code. Function names are small. You have interface functions (doThis) that exist just to call private functions (doThis’).
These odd conventions get compounded by a lot of warts on the language itself.
So finally onto the language itself.
There’s a lot of operators to keep track of. None of which do what you expect. And the ones you do expect, like dot notation, don’t exist until you turn on a language feature flag.
For feature flags there’s a standard set of 20 that every experienced Haskeller turns on but good luck finding that out as a beginner, and good luck finding out that’s why the example isn’t working for you.
There’s also 3 different types of String, all of them in active use by different libraries, which you have to manually cast between often.
And the dev environment can be hard to figure out. Error messages are difficult to grok. The repl often breaks. And you sometimes run into hidden libraries that are in your project but arent accessable until you import them.
Honestly it’s a mess and this is before I touch on the unique parts of a pure functional language like Haskell. Which is a shame because Haskell brings to the table some serious super powers. They’re just not worth the hit to developer productivity in a team setting.
- tome 6y agoHi, thanks for sharing your experience with Haskell! Sorry to hear it wasn't a pleasant one. There is no overall authority in the Haskell world so I'm taking it upon myself to improve the experience of Haskell developers where I can[1]. If you would be happy to expand about the things you struggled with I would be very interested to hear concrete details, either here or on my issue tracker[2]. The things I am curious about are: > The documentation and tutorials for various libraries is often incomplete, outdated and written in a hard to grok plain text document I am keen to make an effort to remove outdated documentation and to complete incomplete documentation. If you give specific examples I shall try to do so. > Asking questions can also be painful as there’s definitely a tinge of elitism to some of the power members. Could you say which forums you discovered "elite power members"? For example, was it Reddit, Haskell-Cafe mailing list, #haskell IRC channel, Discord server? > Secondly, the conventions that are often encouraged go against writing clear and understandable code. Function names are small. You have interface functions (doThis) that exist just to call private functions (doThis’). For better or worse, that's the way the community likes to program. I'm not sure there's much I can do about that unless you have specific examples of code that could be rewritten to be clearer. > These odd conventions get compounded by a lot of warts on the language itself. Did you have any specific warts in mind? > For feature flags there’s a standard set of 20 that every experienced Haskeller turns on but good luck finding that out as a beginner, and good luck finding out that’s why the example isn’t working for you. Were there specific "feature flags" (called "extensions" in GHC) that you needed to turn on but that the compiler didn't tell you that you needed to turn on? That's uncommon (though it is possible, OverloadedStrings is one such example). Which examples did you try that didn't work because they didn't mention which extensions needed to be enabled? If you report them to me I will try to get them fixed upstream. > The repl often breaks Could you say more about in which way the repl ("GHCi") often breaks? > And you sometimes run into hidden libraries that are in your project but arent accessable until you import them. Could you say more? That sounds like something that could well be true but I can't see how it's a problem. You have to import libraries in many languages (Julia, Python, ...). What went wrong here? Thanks for any light you may be able to shed. [1] https://github.com/tomjaguarpaw/tilapia/ https://github.com/tomjaguarpaw/tilapia/ [2] https://github.com/tomjaguarpaw/tilapia/issues/new https://github.com/tomjaguarpaw/tilapia/issues/new
- manishsharan 6y agoHi @tome .. I have often thought the Haskell is ideally suited for Fintech applications due to its unique nature. Perhaps dealing with HFT/forex/options trading or Bitcoin/Ethereum. I think there are better options for webassembly cloudflare workers.
- WraithM 6y agoI appreciate all the work you do, Mr. Jaguarpaw!