Richard Bird’s Thinking Functionally with Haskell disappoints compared to the 1988 Introduction to Functional Programming (co-authored with Wadler). The earlier book used a Miranda-like language to teach universal functional programming principles, with exercises that honed transferable skills. In contrast, this book fixates on Haskell’s syntax and minutiae, like specific type declarations, which feels tedious and narrowly focused. The exercises are uninspiring and Haskell-specific, offering little value for readers unsure about committing to Haskell. While it covers key concepts like monads, the prose is dry and lacks the clarity of its predecessor. Stick to Wadler’s work for a more engaging, versatile introduction.