Some ideas from the future Nim 1\. Writetracking: [https://nim-lang.org/araq/writetracking.html](https://nim-lang.org/araq/writetracking.html)
2\. Iterator returns a lent type so that mutation is a compile-time error: [https://github.com/nim-lang/Nim/wiki/Destructors#lent-type](https://github.com/nim-lang/Nim/wiki/Destructors#lent-type) 3\. Can be used now: parameter constraints to non-var, for example `s: seq{call,`let`}[T]` \- [https://nim-lang.org/docs/manual.html#term-rewriting-macros-parameter-constraints](https://nim-lang.org/docs/manual.html#term-rewriting-macros-parameter-constraints)