I can additionally recommend Yet Another Haskell Tutorial as an introduction.
Another good learning resource (probably on the intermediate level), which has helped me a lot and hasn't been mentioned in the other answers as far as I can see, is Brent Yorgey's Typeclassopedia, which can be found in The Monad Reader (Issue 13)
It is written in a very accessible style and contains (among many other things), the following introductory advice:
There are two keys to an expert Haskell hacker’s wisdom:
Understand the types.
Gain a deep intuition for each type class and its relationship to other
type classes, backed up by familiarity with many examples.
The Monad Reader itself is an absolute treasure trove for functional programmers (not only Haskell programmers).