Obviously, when we want hygienic identifiers as keywords, argument
lists cannot be constructed using quasiquote alone.
So far, we have only debated about the semantics, not about the
syntax. But one conceivable syntax could be that a keyword like
`test:' can be used as keyword in a special form so that your example
becomes:
(define z-args `(arg1 arg2 ,(test: eqv?)))
This is interesting. So test: can be resolved to identifier, but then what (test: eqv?) evaluates to?
Will it be evaluated to something like (<identifier of test:> <procedure eqv?>)?
It brings identifier into runtime. How the procedure z compares the identifiers at runtime?