Real World Haskell
Bryan O'Sullivan, John Goerzen, Don Stewart
This fast-moving but easy-to-follow tutorial introduces you to functional programming with Haskell. You'll learn how to use Haskell in a variety of practical ways, from short scripts to large and demanding applications. Real World Haskell takes you through the basics of functional programming at a brisk pace, and then helps you understand Haskell's capabilities in the context of real-world issues like I/O, performance, dealing with data, and concurrent/parallel programming. The book also discusses using Haskell for working with filesystems, databases, and network services.
You'll find plenty of hands-on exercises, along with plenty of working examples of solid Haskell code. This book is the best place to start if you're interested in learning Haskell.