Because the creation of functional metalinguistic abstractions in non-functional languages can be cumbersome while the reverse is usually trivial, and also because of the syntactic flexibility and referential safety of functional macros, metalinguistic programming is mostly idiomatic of functional programming languages.