> I'd take a hack if there was one. Templates don't introduce a new scope by default. (but they're hygienic, so any variables introduced inside the body of the template itself won't conflict with ones outside, but that doesn't apply to a block that you passed _to_ the template).
So you could do something like this if you wanted: template section(name, code: untyped) = code section foo: proc sayHello*() = echo "hello!" section bar: proc greet*() = sayHello() Run