This is an enhanced version of my old generic proposal.
This proposal suggests a gen code element which can be viewed as a compile-time code generation function call.
The parameters and results of a gen can be any source elements, such as type, const, var, func, import, even gen.
This proposal will use the contract idea in the Go 2 generic draft
to constraint input gen parameters.
It will also use the following helpers:
- `typeOf(v)` // return the type (or default type) of value `v`.