To give some reasons: `iterator oddNumbers(a: array): T =` does not work as there is no way to reason the `T` this could be more clearly written as `iterator oddNumbers(a: openarray[SomeInteger]: auto`
`macro toLookupTable(data: string): untyped` in this case `static string` and `string` are not compatible and you cannot hide that detail. Cause in a macro a you can access the value of a `static string` but you can only access the `strval` of a `string` if it's a string literal.