Indeed ! First mistake.
Now I have illegal capture
var s = @[1, 2, 3, 4, 5]
proc mvalues[T](s: var seq[T]): auto {.noSideEffect.}=
return iterator(): var T =
for val in s.mitems:
yield val
var mit = s.mvalues
for i in mit():
i *= 2
