Maybe too far afield, but: https://leanprover-community.github.io/lean4-metaprogramming...
Gives what you wished for. It's functional, though (among other things). Unlike most lisps, (dependently) typed. But hey, available at compile-time.