make-string-template is too low-level, need higher level abstraction for more friend interface
Created by: NalaGinrut
We should support alist/hash as parameters too, or users have to convert it and unzip the alist then pass in with `apply'. It's inconvenient. First we need a helper function to convert and unzip.