It would be Graham Hutton's Programming in Haskell. That one little chapter on parser combinators was totally worth it.
If I can include this functional pearl "A play on regular expression", Not a book though.
These two showed how composition and simple abstraction could make the solution super beautiful.