Monads can be used to represent generators (even if the semantics are little different).
So any language allowing us to define monadic operations within a special syntax can be used here.
- VB.NET/C# (Linq - but C# already got
yield return
)
- Scala (For-comprehensions)
- Haskell (do-notation)
- F#/OCaml (Computation expressions/Perform)
Ruby can emulate generators through its builtin continuation capabilities.