Excellent discussion, especially the posts by mightybyte.
Every time I find myself writing haskell.. I come to the same question: “How do people get things done in haskell!?”
Not because of the things mentioned in the link.. but because somehow I always end up going down a rabbit hole of theory (either compsci or math).. Not saying this is bad.. I always learn a grip, but because of it - I can’t use haskell for regular things :P
I think this is a pretty common pattern. Taking the “learning Haskell is like re-learning programming” metaphor seriously, this would be like learning Python but feeling infinitely compelled to dig into the VM implementation and how that all hits metal.
The cure to both I think is just to have concrete goals of making something happen. Practice building a small project in Haskell but aim to produce a concrete project result as efficiently as possible measured in your own time and sweat. Huge aspects of Haskell will be penalized merely by you not being familiar with them—but an IO-bound implementation written in an imperative style probably is easily obtainable.
Then from here, make an iteration and improve something. Carve off a small piece of the application and generalize it. Ask for help leveraging types and purity to constrain some pieces.
I think an approach like that can be very successful.
As someone who is learning Haskell in this very way, it’s definitely doable. The hard parts are all up front, then it’s all downhill.
As tel notes, you really need to unlearn your existing views of computation a bit before you can start to grok haskell.
The problem I see is that a lot of people really have a hard time with that one thing. Haskell is oddly easy to use once you start to let go of the notion that computation has to be a series of steps. It is rewarding though, honestly I was at flipping tables stage with computation in general and learning Haskell and Idris have completely made me fall back in love with things. Just my $0.02
Thank you for pointing at the posts by mightybyte. I have just read them, and admire the way zie acknowledges the questioner’s frustrations, offers them a realistic idea of what to expect, and makes them feel valued in this community they are new to. The warmth and attention they give the questioner put me in mind of ye olde ‘Not a sparrow falls …’ saying.
A lot of people seem to experience the Haskell community primarily via its worst exponents. I’m not sure where these meetings take place, but I really liked this discussion because it is a respectful, welcoming, and productive discussion with a newcomer. It illustrates what I like about the community concretely.
Oh man, that poor guy. It’s a good thing everyone was so helpful! I can’t imagine trying to maintain an actual Haskell codebase 3 weeks in without help.
I wonder if my experience is uncommon. I wouldn’t say it was easy to learn, but it made perfect sense, and I didn’t have to care much about the theory to be productive, it just felt like playing with LEGO and finding the right pieces. Granted, I never got into the more advanced GHC type system extensions, or other expert-level topics, before moving on to other things.