@schmidh you can do something like this. I haven't figured out a way to do it 
without the intermediate seq though.
    
    
    import tables, typetraits
    
    # `untyped` has to be last, so `n` and `iter` are reversed
    template take(n: Natural, iter: untyped): seq[type(iter)] =
      # 'take' yields the first 'n' values of 'iter'
      var i = 0
      var arr: seq[type(iter)] = @[]
      for val in iter():
        arr.add(val)
        if i == n - 1:
          break
        i += 1
      arr
    
    var wordFrequencies = initCountTable[string]()
    wordFrequencies.inc("a")
    wordFrequencies.inc("b")
    wordFrequencies.inc("c")
    wordFrequencies.inc("d")
    wordFrequencies.inc("d")
    wordFrequencies.inc("e")
    wordFrequencies.inc("e")
    wordFrequencies.inc("e")
    wordFrequencies.inc("f")
    wordFrequencies.inc("f")
    wordFrequencies.inc("f")
    wordFrequencies.inc("f")
    # fill wordFrequencies with some values ...
    wordFrequencies.sort
    for (word, count) in take(2, wordFrequencies.pairs):
      echo count, ", ", word
    
    # Prints
    # 4, f
    # 3, e
    
    
    Run

Reply via email to