Haskell programming from first principles
Introduction Why Haskell? Whatever your reason, Haskell can help you think differently about writing programs. It’s a pure, functional language with a rich type system. Because of these features, Haskell can be a little difficult to learn, at first, but only because it is foreign, not because it takes a genius to understand and write in it.
The best frame of mind for learning Haskell is to not translate what you see in Haskell into your favorite language, but, rather, try to think in terms of Haskell directly. Don’t worry if you don’t understand everything the first time around; reviewing, recalling, and revisiting information is an efficient way to learn.
...