That’s a fair point, they don’t really span the whole range of paradigms. I do think just looking at the paradigm is a reductive view.
All of those languages are very different in how they handle concurrency, safety, objects, meta programming, etc, in ways that force you to adapt how you approach and deconstruct problems. Certainly not as much as a whole different paradigm would, but still in ways that are valuable to explore.