https://www.cs.cmu.edu/~rwh/pfpl/index.html
direct link to a preview of the 2nd edition:
https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf
direct link to an unabridged version of the 1st edition:
The whole book is basically taking a core minimal language (Oz) and extending it in various ways to obtain different paradigms (functional programming, declarative concurrency, message passing concurrency, imperative/stateful programming, OOP, shared state concurrency, constraint programming, logical programming etc).
It's very fun and illuminating.
It also includes a part on formalizing semantics, of which I recall nothing.
https://softwarefoundations.cis.upenn.edu/
And it's free.