Ask HN: How did you really learn Haskell?

12 points by bobajett ↗ HN
I've been going through Learn You a Haskell and Real World Haskell, but I was curious to find out the experience other Haskellers had in their path to learning Haskell? The author of LYAH himself mentioned: "I failed to learn Haskell approximately 2 times before finally grasping it because it all just seemed too weird to me and I didn't get it." So I thought it would be very interesting and helpful to find out others experience and how they eventually learned Haskell.

5 comments

[ 4.2 ms ] story [ 17.6 ms ] thread
I learned to use it for math and scripting by doing Project Euler problems.
I had the same experience. I tried learning Haskell twice and failed miserably both times. I think my brain pieced things together subconsciously after those two attempts though, because the third time I sat down with it, it almost seemed to come naturally. Unfortunately, as much as I love the language, I also quickly came to the conclusion that it's not a very good fit for the kinds of projects I usually work on, although maybe I would have another sudden revelation if I jumped in and tried using it for a web app. Still, understanding some of the principles of the language, the rich type system, isolation of i/o, etc, have undoubtedly changed my coding style in all languages for the better.

This was my first working Haskell program - https://github.com/johnsoft/haskell-sudoku-solver

I started reading LYAH, and found it interesting but slow. I wasn't patient enough to get through more than the first half of the book. Then I found "Write Yourself a Scheme in 48 Hours"[1], which was much more interesting. I just jumped into that and wrote a simple Scheme interpreter which then morphed into an interpreter for my own language.

[1]: http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_H...

Basically, I learned enough to become comfortable with Haskell through that little project. After that, I got better by working on more projects in Haskell, doing more reading and answering StackOverflow questions.

Learn thoroughly how to read type signatures, compiler warning/errors, GHCi ouput. The 4th thing on my Learn to Read list for other languages is bytecode/Core/assembler but that's not easy

My first languages were APL and C, I learned them the same way, by learning how sets of language features were used together vs. ruby or clojure where you learn how a feature works in isolation ("oh, that's a block, that's destructuring a vector etc"). I put postit notes on all the code snippets i didn't understand in RWH and stared at them until i understood what every token was doing there. So if you're going along saying, I 90% understand, 82%, 79%, go back.

If it helps, there's a lot more resources and places to ask questions, ask for refactorings, I'm going to pimp my list

http://isthishaskell.blogspot.com/2013/02/tips-on-learning.h...

(If you ask same question on reddit or beginners mailing list, you'll get dozens of answers)

I'm being super-methodical about it. I read LYAH halfway through and felt like it was starting to fall through my fingers like sand.

So I went back to the beginning and started to make an Anki deck about it. I have a deck for the long Starting Out chapter completed now - 269 cards - and am about to start on Types and Typeclasses. It'll take forever, but it's amazing how much better I retain what I'm learning now. Not sure how suitable Anki will be when the book starts getting more theoretical, but so far it's working great.

I think it's worthwhile to mess around with Project Euler as you go, too - you can solve the first Euler question with the knowledge in just that first section, and if you struggle through the alebraic form, it's really rewarding.