kubo39's blog

ただの雑記です。

nimのiterator実装

ちょっと気になって調べてみた。

結果としては、nimのiteratorPythonのgeneratorのように状態を持ったVMのスタックフレームのコピー/リストアによって実現している。

Frameのpush/popのコードはこのあたり。

https://github.com/Araq/Nim/blob/ccb9ae2d52cc42f2489a7bbd758c924a4dbbe872/lib/system/excpt.nim#L40