On input/argument side, the semantics are clear: * `untyped` passes in the raw AST without semchecking (no type information available) * `typed` performs symbol lookup before passing the argument (type information available)
On output side, I'm also confused. I usually only use `untyped` when the macro/template returns an arbitrary AST, and concrete types if it returns a typed expression. The semantics of a `typed` return values has also been discussed here: [https://forum.nim-lang.org/t/4037](https://forum.nim-lang.org/t/4037)
