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