I've been reading Real World Haskell recently and loving it. It does a fantastic job of blowing your mind while simultaneously showing you how to apply Haskell to real-world problems.
Actually I didn't like it at all. It's been a few years, but it totally put me off learning Haskell.
Doing some small steps again now, but although I'm usually all for real world applications first (instead of doing the millionth factorial function) - but it did not make much sense to me didactically.