Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002. ISBN 0-262-16209-1
Matthias Felleisen, Robert Findler, Matthew Flatt, Shriram Krishnamurthi. How to Design Programs - An Introduction to Programming and Computing (2nd edition). 2018. ISBN 978-0-262-53480-2