After the success of the first edition, Introduction to Functional Programming using Haskell has been thoroughly updated and revised to provide a complete grounding in the principles and techniques of programming with functions. The second edition uses the popular language Haskell to express functional programs. There are new chapters on program optimisation, abstract datatypes in a functional setting, and programming in a monadic style. There are complete new case studies, and many new exercises. As in the first edition, there is an emphasis on the fundamental techniques for reasoning about functional programs, and for deriving them systematically from their specifications. The book is self-contained, assuming no prior knowledge of programming and is suitable as an introductory undergraduate text for first- or second-year students.
I'm a 'lowly practitioner' and I've only used functional programming languages a modest amount in my professional experience. Most of the other answers seem to be, mostly, focusing on newer functional programming languages, of which Haskell seems to be the 'coolest' one currently, and that's not one I've learned beyond very cursory 'skimming'. 2b1af7f3a8