Because the proc that uses `R.init(v)` uses what is called a "closed symbol choice" for init, meaning only the init definitions before it are possible symbol choices. To prevent this, use the [mixin statement](https://nim-lang.org/docs/manual.html#generics-mixin-statement) like so: func init*[R, A](_: type[seq[R]], list: seq[A]): seq[R] = mixin init for v in list: result.add R.init(v) Run
- Why proc behavior depends if it defined after or before an... alexeypetrushin
- Why proc behavior depends if it defined after or befo... Hlaaftana
