Just to clarify. It's not that repr/$ shows the wrong thing, it's that some “high level” types are being implicitly replaced with “lower level” types during compilation. And these replacements effectively disregard arg types in proc signatures.
Like, even if you have an arg of type seq[SqlQuery] in a proc definition, this arg value will have type array[string] when the proc body is executed during compilation, because seq is replaced with array and SqlQuery is replaced with its string repr. Am I understanding this right?