(apply-template argv expr values)
For use in macros. argv is an argument list, as in defn. expr is a quoted expression using the symbols in argv. values is a sequence of values to be used for the arguments. apply-template will recursively replace argument symbols in expr with their corresponding values, returning a modified expr. Example: (apply-template '[x] '(+ x x) '[2]) ;=> (+ 2 2)
user=> (apply-template '[a b c d e] '[d a b e c e b a d] '(1 2 3 4 5))
[4 1 2 5 3 5 2 1 4]
user=> (apply-template '[a b c d e] '[d a b e c e b a d] '(1 [2 3] [4 5]))
[d 1 [2 3] e [4 5] e [2 3] 1 d]