First I'll second the other comments mentioning "learn you a haskell". I dont know haskell in the way an expert does, nor do I have very much exp writing it but, I can and enjoy when I do. "learn you a haskell" does a great job at speaking in clear english and is, honestly, an enjoyable book that is pretty fun to read.<p>But, if you are like me, you need to understand the motivations and intensions behind things before you can really feel that you have reached understanding. You know, the big picture type stuff.<p>So, in my opinion, to fully understand functional programming, you need to think about what it tries to do/solve. To get here I would recommend thinking about insanely complex systems and how you would build a flexible and efficient one. To start you may think about all the objects you would need to account for, which, eventually, causes insanity. Its not the objects in the system that causes the complexity, it's their interactions. So, you may start thinking about handling all of the interactions, which is where, I believe, the solution (really method is the better word) lies.<p>I believe then, that the key to understanding functional programming is to understand what its related concepts are able to solve. Thinking about how to make sense of and control this shitstorm of complexity will, hopefully, shed light on why the hell something called an "applicative functor" or, <insert other crazy/weird term> even exists.<p>I know, I know, I am being too general... the stuff comes from category theory though, so, uh, hard not to be... but seriously, if this is at all helpful and not totally incorrect, I'd be happy to expand in more detail<p>if, on the other hand, it is not helpful... forget it totally, learn a language, and hopefully the concepts follow
else if, I am totally incorrect... why and where did it all go so wrong?
else, nop