Thanks for that "kernel" of information about "apply"!!
Yeah the one catch to caching the macro expansion is if the macro depends on something which subsequently changes after the expansion is cached. In practise I was not that bothered about this - I never ended up needing to write such macro.