Functional programming in Scheme family languages:
- Structure and Interpretation of Computer Programs by Ableson, Sussman and Sussman (MIT Scheme) - probably a book that needs no introduction
- How to Design Programs by Felleisen, Findler, Flatt and Krishnamurthi (uses the Teaching Languages, a subset of Racket) - a textbook for complete beginners about how to approach programming problems in a structured, organized and data-driven way using functional programming techniques
- The Little Schemer by Friedman and Felleisen (Scheme) - an introduction to Scheme and functional programming presented as a dialogue between a student and a teacher
- The Little Typer by Friedman and Christiansen (uses Pie) - a followup to The Little Schemer that introduces dependent types