
I learned Smalltalk in 1999, then I found LISP because Alan Kay said it was the most awesome language ever invented. That got me hooked into using s-expressions for everything! Then I found Erlang and that was just brilliant, although I still missed the s-expression format of LISP. Then, about seven months ago I decided to try Haskell, I bought the Real World Haskell book and I've been trying to get better every day I can. I've been a software develoepr for aobut twenty-six years, from assembly language on chips and DEC/VAX right through to today and without doubt Haskell has been my single most frustrating learning experience ever. And that my friends is a compliment to Haskell! :) I am *not* a mathematician, I did 'A'-level maths and physics and computers back when Clive Sinclair was a force to be reckoned with. To be told I have to read a big list of stuff with titles that would make people think I was speaking in tongues doesn't cut it for me. For my day job I *have* to cut PHP/Drupal, so I applied learning Haskell and made myself some tools that generate Drupal code! Make it relevant to what you do everyday, that way it will carry more meaning for you, why spend hours head-scratching over some fancy pants monadic kung-fu lesson when you can as easily learn to read a file and process each line, do something with it and then create a new file. First rule of optimisation: Don't do it. It was how I felt learning LISP too, there are so many functions to do things, which is the 'right' one? Make it work first then you can step back and say, "Can I do this more succinctly using more advanced language features?" Don't try to learn it all at once, it's depressing! I know! BIG HELP: The single biggest thing that helped me was to download the PDF slide-notes and watch both parts of Simon Peyton Jones talks, all available here: http://notes-on-haskell.blogspot.com/2007/08/more-spj.html It was when I realises that, unlike C++ for example, where there is an implicit 'this' pointer stuffed in the stack, in Haskell programs there is an implicit pointer to the type information being passed around which made lots of things click for me like "How does it know?" LOL Haskell is the classic elephant sandwich; a formidable task, but everytime I understand something new it feels great! Best of luck! :) Sean Charles

On Fri, Dec 17, 2010 at 8:44 AM, Sean Charles
I've been a software develoepr for aobut twenty-six years, from assembly language on chips and DEC/VAX right through to today and without doubt Haskell has been my single most frustrating learning experience ever.
And that my friends is a compliment to Haskell! :)
Don't try to learn it all at once, it's depressing! I know!
I took my first crack at Haskell 5+ years ago, was befuddled by the term "constructor" and left completely in the dark by monads. So I moved on to other things. It took me about three tries and a lot of research into various corners of computer science (I was a liberal arts major) to reach the point where I understood the terminology and began to grasp the big picture. Fortunately there's a lot more information available for beginners now. Even though the likelihood of me ever getting paid to program in Haskell is nil, what I've gained from studying it vastly outweighs the considerable effort I put into it. I thought I was learning another programming language; in fact, I was learning to think about computation, logic, and mathematics in ways that were completely new and very enlightening to me. To really really understand it all, you have to delve into lambda calculus most obviously, but also intuitionistic mathematics and logic, proof theory, category theory, and various other fascinating topics. In 100 or even 10 years such stuff will form part of a basic educational program, but at the moment it's like a secret world of magical beasts. The down side is there's nobody to talk to about it (except via mailing lists) since almost nobody outside of specialists even knows this world exists.
BIG HELP: The single biggest thing that helped me was to download the PDF slide-notes and watch both parts of Simon Peyton Jones talks, all available here: http://notes-on-haskell.blogspot.com/2007/08/more-spj.html
His book "Implementation of Functional Languageshttp://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/..." is also very helpful, even if you have no interest in actually implementing functional languages. It (and various other pubs) has proven very helpful in deciphering some of the arcane bits of terminology that often pop up in discussions of Haskell and FP, such as boxing, bottom, "weak head normal form", etc. You can skim the gory details and still get a lot out of it. Plus, I just found the tutorial versionhttp://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/ . -Gregg
participants (2)
-
Gregg Reynolds
-
Sean Charles