ちょっと気になって調べてみた。
結果としては、nimのiteratorはPythonのgeneratorのように状態を持ったVMのスタックフレームのコピー/リストアによって実現している。
Frameのpush/popのコードはこのあたり。
https://github.com/Araq/Nim/blob/ccb9ae2d52cc42f2489a7bbd758c924a4dbbe872/lib/system/excpt.nim#L40
ちょっと気になって調べてみた。
結果としては、nimのiteratorはPythonのgeneratorのように状態を持ったVMのスタックフレームのコピー/リストアによって実現している。
Frameのpush/popのコードはこのあたり。
https://github.com/Araq/Nim/blob/ccb9ae2d52cc42f2489a7bbd758c924a4dbbe872/lib/system/excpt.nim#L40