About templates, they're like C macros, a simple way to do metaprogramming 
without manually building syntax like in Nim macros. They're not like procs in 
that they aren't called at runtime, they simply exist during compile time and 
transform AST given to its parameters. An `untyped` parameter is any raw AST 
that hasn't been type checked yet, and a `typed` parameter has been type 
checked and gone through AST transformation. If you name a template parameter 
like `x: int`, `x` will be type checked and have the int type. If you want a 
value to use in a template inside `when` expressions or other static checks 
instead of an expression like `x: int` would give, you can use `static[int]`, 
but it's not entirely stable yet.

Reply via email to