Dynamic typing and garbage collection are kind of inherent to being a lisp. Without those you just have C or Java but with sexprs.
Metaprogramming in C or Java is not fun. It's either code generation integrated with the build system, preprocessor (yuck), annotations processors or runtime weaving. Which all suck at different levels.