As a beginner, I’m really struggling with my Haskell relationship. Please read this as a strong encouragement towards making Haskell more accessible, and a discouragement from extending the features of the language.
I have been dabbling with Haskell on and off for 9years, reading the usual intro books, trying to use it for simple tasks like basic data analysis, … It was the language of my COMP101 course, my first ever taste of programmin. Ever since I have been captivated by the promises of its superiority - advantages of academic influence, mathematical congruence (I am a maths major), fast to write, conceptually natural (???), safety checks/guarantees, bug limiting… not to mention beautiful syntax (this one I finally agree with)!!!
However, despite being “faster to write” for experts, it seems awfully hard to get to any level of productivity. There are so many features of the language to get your head around, to name a few:
the concept of type classes and all the instances such as monads, along with at least 100 of their attributes (<*>, >>=, fmap, compare, …)
algebraic data type definitions, data constructors
type instances, type synonyms, type constructors, kinds, patterns, currying,
so many different syntactic features (operator precedence, )
The reported “productivity advantage” needs to account for the time to learn, and it seems like you need to be solid on all of these things until you can even start to understand the documentation.
But how can you get solid on all these things? You need to be able to write code, interesting code, for useful/meaningful things. But how can you do this without accessible documentation?
I am starting to wonder if it the language is just too complex to be worth the effort. I am losing heart.
I’m not sure what the way forward here is, but something needs to change. There is certainly a shortage of accessible walk-through documentation for simple modules or simple tasks…
It just seems like the community is far too focused on making more ego-inflating advanced features, and not focused enough on teaching it to others so they can share its advantages.
There is no point in baking a cake if nobody is going to eat it.