
2010/12/16 Brent Yorgey
On Thu, Dec 16, 2010 at 04:41:24PM +0100, Luca Ciciriello wrote:
Hi, here my path (in correct order) I followed to learn to think functionally:
1) Curry-Howard Isomorphism 2) Type Theory & Functional Programming 3) The Hindley-Milner Type inference algorithm 4) Basic Category Theory 5) Notions of computation and monads 6) Denotational semantics 7) Monads for functional programming 8) Theorems for free. 9) A History of Haskell: Being Lazy With Class
These are all wonderful topics. But I strongly disagree with the notion that one must understand all of these before even starting a Haskell tutorial (!), or even that one must understand all of these to be able to "think functionally" in some sense.
... aaaaand I'm going to agree with Brent here. It took me a while to have many things "click", but I found it hard to thoroughly read many papers. The mathematical notation which I'm not familiar with often is a problem to stay focused. What helped for me was reading tutorials and practice. Reading about people's problems on Café, and reading the replies. Re-reading several times a tutorial, weeks apart. I wish I had Real world haskell was I was starting, but I have it now and I'm glad I do. I can't claim I understand more than Haskell 98, but it's more than enough for a start. David.