1. 24

I imagine most lobsters are familiar with this, but for any FP/Haskell newbs out there and anyone wanting to brush up on FP concepts in the key of haskell, do check this out, it’s brilliantly written and very readable, beautifully presented, and so far the best resource I’ve found online for getting a solid understanding of FP principles (including legendary brain-aching monads).

  1.  

  2. 8

    Learn You Some Erlang for Great Good is also worth mentioning here then :)

    1. 11

      Hi, I’ve been teaching people Haskell for a couple years and I’m writing a book for teaching beginners Haskell with my coauthor Julie, who’d never programmed before learning Haskell.

      I’ve been steering people away from LYAH for learning Haskell for quite some time now. We have better resources now. I already knew LYAH was problematic at the time, but my coauthor tried learning with LYAH and found it extremely frustrating and unfruitful. LYAH doesn’t work well for people that already know how to program either.

      I explain some of this in my post about resources for learning Haskell.

      What I do recommend is outlined in my guide.

      1. 16

        There are certainly other excellent resources, but IMO LYAH is a fine book that I would recommend to anyone interested in learning Haskell.

        1. 9

          Agreed.

          This post is probably going to say more about me than I would like, but…

          LYAH was actually the first book about Haskell that made Haskell approachable for me, in that it starts off nice and slow and takes its time to explain things. It doesn’t go off into la-la land like so many other Haskell resources (even those targeted at beginners). I’ve tried getting into Haskell with a beginner’s tutorial a couple of times over the years and this time with LYAH is the first time it makes sense and doesn’t have me cursing “Why? WHY? WHYYYYY?”.

          This is not coming from a total newbie to programming. Not that I am very good, but I’ve been coding since I was 10 (I’m 41 now) starting with Basic, m68k assembly, C, C++, C#, Java, Perl, Python, Scheme and, my favourite, Common Lisp. There’s probably some more languages I’ve done, but in the former I’ve done some serious work. There’s a definite slant in the kind of languages I’ve used though.

          I do not know why LYAH is so divisive, but I do know there’s different ways in how people learn. I’m mostly self-taught and I mostly learn by doing but for some reason LYAH’s way of talking & demoing at the reader and having the reader type in the REPL works well for me. I won’t pretend I know Haskell well now but LYAH has definitely made it easier for me to pick up resources that would have turned me away earlier.

          Anyway, as an introduction to Haskell it seems fine. (And, yes, I have checked out bitemyapp’s resources in the past.)

          1. 6

            My first attempt to learn Haskell was with LYAH and was not successful. The lack of exercices was quite problematic for my way of learning things and I learned a lot more going through exercism.io exercices at the time. But LYAH is not a bad book, the type what the author types way of learning is just not for me. Then I discovered Chris (bitemyapp) guide which helped me tremendously with a really good learning path and a lot of more advanced resources. Also what I’ve read from Chris & Julie’s upcoming book (http://haskellbook.com) is really good and you should get it :)

            1. 5

              I got to meet bitemyapp at lambdaconf this month, hi bitemyapp! and I cannot agree.

              Don’t get me wrong, that sun saying holy shit is a great invitation to haskell, but as far as useful information from the book, I can’t say I got a good amount out of it. I preordered bitemyapps’s book on teaching haskell and was really amused to start out doing lambda calculus problems.

              I know that seems crazy but its the exact thing that helped me understand Haskell. LYAH is ok for a start, but I consider it at best a toe dip into the waters of functional programming. The biggest problem with LYAH, and almost every resource I can find, is that you aren’t given exercises to do.

              That might seem contrived but learning how to program in a functional context isn’t something you can do by osmosis. You have to do it, teach a man to fish and all that. I don’t see a shortcut in this regard. LYAH exposes you to haskell, that is about it really. Understanding it is another matter.

              1. 9

                LYAH is a fine book that I would recommend to anyone interested in learning Haskell.

                Having run a lot of people through the process, I would not. There are a lot of options other than the core recommendation of cis194 -> NICTA Course I give people that would be better than LYAH. I explain those in the linked post.

                I’ve been witness to a lot of people burning out and giving up on learning Haskell, most of this was entirely unnecessary and because they were pointed to resources that didn’t work well. Nobody tests anything or really even cares if their recommendations are sound, let alone ideal.

                If you learned Haskell from LYAH, I have news for you - you didn’t learn Haskell from LYAH. You were shown some code and then given over to the tender mercies of whatever blog posts you could find to explain things properly when something didn’t make sense.

                There’s a natural tendency to apply redaction to the narrative of how we learned something and it must be resisted. We should examine how we actually learned things, when they actually made sense, and test methods of teaching material so that we can learn what really works well.

                People need exercises to learn a programming language and LYAH has none. I have a lot more reasons (and an “n” much higher than 1) for steering people away from LYAH but this is the simplest and most grave objection I can present.

                I’m not asking everyone else to care as much as I do about making Haskell less fearful and difficult-seeming, but I would ask that you consider why so many people have given up in the past.

                1. 4

                  There has always been a couple of reasons why I didn’t like LYAH. I tried learning from it a few months back and it really took me a month to even get through the first 12 chapters. I gave up after that because I found that the book was no longer helping me learn anything, mostly for the following reasons:

                  1. One of my criticism for learn you a haskell is that it tries so hard to be a dialogue that it loses the fact that a reference style of education has lots of value too. I wanted some way to compare type, newtype, datatype, class, and instance without having to have 5 pages open. A table or venn diagram would have been amazing but the format of the book tried to step so far away from that. There was no good valuable visualization either and i eventually chose to block them from my readings because they really didnt serve a purpose other than distraction.

                  2. Then I had sections like where I was introduced to the Data.List package which was just a dump of information that I wasnt supe how to really digest. Do I memorize this? Do I skim this?

                  3. Finally, i think what really hurt me was than there was no recap or chapter summary. I kind of just read, finish, and move on. I eventually really enjoyed Haskell but I realize that the de facto LYAH really isnt a good recommendation and would not recommend it to others in the future.

                  I really hope that there will be some book that is a dialogue for explaining the concepts but also a quick reference guide as well. I think some combination would really make such a material amazing.

                  1. 4

                    I really hope that there will be some book that is a dialogue for explaining the concepts but also a quick reference guide as well. I think some combination would really make such a material amazing.

                    My coauthor wants to make a “pocket guide” counterpart to our main book, incidentally. I’ll share your comment with her :)

                  2. 1

                    I think I honestly learned the most from just hanging out on the irc channel and asking (and answering!) questions. That and, as with everything, the documentation.

                  3. 2

                    I did not find LYAH but have been more frustrated by it.

                    I am trying to learn more about functional programming and ended up finding Racket and ML to have clicked with me more than Haskel. Also I find cabal to be a nightmare in just my few months trying to use it.