My interpreters course used this book, as well as 'the little schemer'. They follow a lot of conventions that I find really useful for software development (various intricacies of languages in active development tend to follow the same conventions of diagramming, labeling, notation, etc - all really important things to keep standard when reasoning about, teaching, and explaining programming languages!)
https://www.amazon.com/Essentials-Programming-Languages-MIT-...
https://github.com/mwand/eopl3
https://mitpress.mit.edu/books/little-schemer-fourth-edition
There's also this book that from my understanding, a lot of people consider fairly foundational / useful (own it, haven't read it)
https://mitpress.mit.edu/sites/default/files/sicp/index.html