Я использую итераторы некоторое время, и я люблю их.
Но хотя я много думал об этом, я не мог понять, «как реализовать компилятор, который распознает итераторы». Я также исследовал это, но не смог найти ни одного ресурса, объясняющего ситуацию в контексте разработки компилятора.
Чтобы уточнить, большинство статей об итераторах подразумевают, что существует какая-то «магия», реализующая желаемое поведение. Они предполагают, что компилятор поддерживает конечный автомат, чтобы отслеживать, где находится выполнение (где виден последний «возврат урожая»). Меня особенно интересует это свойство итераторов, которое позволяет выполнять ленивые вычисления.
Кстати, я знаю, что такое конечные автоматы, уже прошел курс проектирования компиляторов, изучал Dragon Book. Но, по-видимому, я не могу связать то, что я изучил, с «магией» csc.
Любые знания или дифференцированные мысли приветствуются.