Sather extends the notion of an iterator in a powerful new way. We arg
ue that iteration abstractions belong in class interfaces on an equal
footing with routines. Sather iterators were derived from CLU iterator
s but are much more flexible and better suited for object-oriented pro
gramming. We retain the property that iterators are structured, i.e.,
strictly bound to a controlling structured statement. We motivate and
describe the construct along with several simple examples. We compare
it with iteration based on CLU iterators, cursors, riders, streams, se
ries, generators, coroutines, blocks, closures, and lambda expressions
. Finally, we describe experiences with iterators in the Sather compil
er and libraries.