I liked the `little` series. It's a bit slow if you already know enough circular lispiness but they really manage to make a full theory emerge from tiny innocent questions. Brilliant.
I could add Queinnec's Lisp in small pieces (for the gradual derivation of fancier and fancier interpreters, the continuation one in CLOS was cool, and the bytecode part also very very cool)
Bratko's Prolog book was nice.
I'm tempted to mention the dragon book but I only read 40%.
- The Elements of Computing Systems: Building a Modern Compiler from First Principles
- Operating Systems: Three Easy Pieces
- Systems Performance: Enterprise and the Cloud
- Exercises in Programming Style
- The Little Typer
- Conceptual Mathematics: A First Introduction to Categories