URI: 
       Iterators on Coroutines in Lua
       
       Iterator in Lua is what one can put after «in» keyword in
       «for … in» structure. The general syntax of the struture is:
       
       for var1, var2, ..., varN in f, s, i do ... end
       
       Here `f` is an iterator. It is usually encoutered in this form:
       
       for var1, var2, ..., varN in g() do ... end
       
       Here g() evaluates into (f, s, i). I am not going to make a
       distinction between `f` and `g`, both are iterators.
       
       The question is when iterators are better to write on coroutines?
       In PiL[1] the resone for coroutines is quite terse:
       
       >>>
       With this feature, we can write iterators without worrying about
       how to keep state between successive calls to the iterator.
       <<<
       
       Producer-consumer example is also good, but not very expressive (for me).
       
       Lets first look at the iterator that could gain little if coroutines added.
       The iterator's state here is the input array and some iteration index.
       
  HTML take_one.lua
       
       The next goes an iterator that generates permutations of an array.
       Surprisingly enough it uses take_one() for this:
       
  HTML permute.lua
       
       In two words it works like this. For each take_one() step it starts
       iterating over all tail's permutations. Looks simple if no need to
       think about the iterator's state, but what if rewritten with no
       coroutine? Its state is a visible structure in this case:
       
  HTML permute-explicit.lua
       
       It is good to see the iterator's state, but the algorithm readability
       is traded for that.
       
  HTML [1] Pil 9.3 (1st ed.), 2003