Enumerating all simply typed lambda terms of a given type
This question has been considered several times in the academic community, from the practical:

Yakushev &amp; Jeuring, Enumerating Well-Typed Terms Generically

Fetsher &amp; al, Making Random Judgments: Automatically Generating
Well-Typed Terms from the Definition of a Type-System

to the more theoretical

Grygiel &amp; Lescanne, Counting and generating lambda terms

Implementations can pretty easily be found online. I didn't find any that addressed a system with iterators per se, but it shouldn't be a stretch from what already exists.