<div class="gmail_quote">On Fri, Dec 17, 2010 at 8:44 AM, Sean Charles <span dir="ltr">&lt;<a href="mailto:sean@objitsu.com">sean@objitsu.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
I&#39;ve been a software develoepr for aobut twenty-six years, from assembly<br>
language on chips and DEC/VAX right through to today and without doubt<br>
Haskell has been my single most frustrating learning experience ever.<br>
<br>
And that my friends is a compliment to Haskell!  :)<br><br>
Don&#39;t try to learn it all at once, it&#39;s depressing! I know!<br></blockquote><div><br></div><div>I took my first crack at Haskell 5+ years ago, was befuddled by the term &quot;constructor&quot; 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&#39;s a lot more information available for beginners now.</div>
<div><br></div><div>Even though the likelihood of me ever getting paid to program in Haskell is nil, what I&#39;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&#39;s like a secret world of magical beasts.  The down side is there&#39;s nobody to talk to about it (except via mailing lists) since almost nobody outside of specialists even knows this world exists.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
BIG HELP: The single biggest thing that helped me was to download the<br>
PDF slide-notes and watch both parts of Simon Peyton Jones talks, all<br>
available here:<br>
<a href="http://notes-on-haskell.blogspot.com/2007/08/more-spj.html" target="_blank">http://notes-on-haskell.blogspot.com/2007/08/more-spj.html</a></blockquote><div><br></div><div>His book &quot;<a href="http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/index.htm">Implementation of Functional Languages</a>&quot; 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, &quot;weak head normal form&quot;, etc.  You can skim the gory details and still get a lot out of it.  Plus, I just found the <a href="http://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/">tutorial version</a>.</div>
<div><br></div><div>-Gregg</div></div>