
And a book, which I'd call "an Oldie but Goldie" could be added: John Allen's "Anatomy of Lisp" (1978) which still is an excellent read for those who want to dive deep into Lisp's interna. One might also call it a precursor of SICP, as it covers a number of introductory topics too.
Abstract: https://dl.acm.org/doi/10.5555/542865
LISP has dialects which are not homoiconic, where programs are not written as s-expressions, ... But the core is the same: a specific List Processor. McCarthy himself did not want to write programs as s-expressions. He defined M-Expressions, where S-Expressions were only used for the data.
Check the book "Anatomy of LISP", which is a classic. All the code in the book is written in M-Expressions. Now, Racket gets a new syntax (-> Rhombus). But the language core mechanisms are still there. I'm a fan of the s-expression syntax, but I've also heard&read from many people (incl. McCarthy), that THEY preferred a different syntax. I've seen Apple defining Dylan (Dynamic Language) with an s-expression syntax and then changing the language to a different syntax for broader adoption. You (and me) think it is essential. McCarthy and others thought that it was the wrong syntax for getting wider adoption.
Btw., personally, I don't care that much what Rich Hickey says. I can think for myself.
Anatomy of LISP - John Allen https://archive.org/details/anatomyoflisp0000alle/