With the advent of coroutines, Tcl now has an iterator protocol. The protocol is simple: An iterator is a command which one calls repeatedly until the command no longer exists. for ... in ... is a drop-in replacement for the standard for command which supports an expanding syntax for looping over iterators.