Nim iterators can be recursive, this is my iterator on arbitrarily nested 
arrays or sequences to construct tensors.
    
    
    iterator flatIter*[T](s: openarray[T]): auto {.noSideEffect.}=
      ## Inline iterator on any-depth seq or array
      ## Returns values in order
      for item in s:
        when item is array|seq:
          for subitem in flatIter(item):
            yield subitem
        else:
          yield item
    
    
    Run

Reply via email to