Reading this, it feels like you have never touched Common Lisp.
It's not a functional programming language. It's an object-oriented imperative language.
It's not a functional programming language. It's an object-oriented imperative language.
add functional, add meta-programming.
The Common Lisp object-system does not use the more imperative message-sending / virtual method calling. It favors "generic functions of related methods" instead - thus this is kind of an integration of function-centric programming into the traditional view of OOP where methods belong to classes.
Imperative relates to coding style - I can equally write imperative or recursive code in Java.