In the case of Prolog, term and goal expansion are arbitrary compile-time execution mechanisms, completely isomorphic with macros, and are referred to as macro mechanisms.
The characterization of it not being "compile-time macro execution" is strange, what do you think these predicates are doing?