Try this fixed version:
    
    
    proc enumerableRepeat[T](value: T, n: int = -1): iterator(): T =
      result = iterator(): T {.closure.} =
        var i = 0
        while n == -1 or i < n:
          yield value
          i += 1
    
    
    proc writeFile[T](filePath: string, iter: iterator():T) =
      var file = open(filePath, mode=fmWrite)
      for str in iter(): file.writeLine(str)
      file.close()
    
    writeFile("iter.txt", enumerableRepeat("a", 100))
    

  1. You accidentally made `filePath` an iterator too.
  2. You need the `()` when you call the iterator.


Reply via email to