Haskell is a purely functional language that allows programmers to rapidly develop clear concise & correct software The language has grown in popularity in recent years both in teaching & in industry This book is based on the author's experience of teaching Haskell for more than twenty years All concepts are explained from first principles & no programming experience is required making this book accessible to a broad spectrum of readers While Part I focuses on basic concepts Part II introduces the reader to more advanced topics This new edition has been extensively updated & expanded to include recent & more advanced features of Haskell new examples & exercises selected solutions & freely downloadable lecture slides & example code The presentation is clean & simple while also being fully compliant with the latest version of the language including recent changes concerning applicative monadic foldable & traversable types