CLU's iterators correspond to what [Python] and other languages call [generators]. CLU iterators were modeled on Alphard's generators [http://www.pmg.lcs.mit.edu/CLU.html]. IPL-v generators and [Lisp] mapping functions are related to Alphard's generators. Can someone explain the idea of iterator/generator here? It seems to me that the idea is that rather than explicitly listing an entire range of values (that a variable can take within a loop, etc.) one lists the beginning and ending value of a range plus the incremental factor and the language generates the value as needed. How is this different than using a for loop though? An iterator is ''richer'' than a mere index. An iterator carries the ''container'' reference and the element's position with it. You can use 'em without for loops. The iterator controls access to the element. -- [Todd Coram] [RS] So would the "loop variable" in a [foreach] come closer to the iterator concept? Yes, but iterators are most useful when you have different ''container'' types (or classes). [foreach] iterates over lists. A useful iterator interface deals with strings, lists, trees, vectors, etc. You need OO, ''interfaces'' or ''inherent'' polymorphism to take full advantage of iterators. Since Tcl primarily deals with lists and arrays, there is no great need for such polymorphic operations. Right? Now, [VFS] gives us a (loose) approximate of stream iterators which are very useful abstractions... -- [Todd Coram]