discard """ output: ''' 100 0 ''' """ import tables block tgeneric0: type TX = Table[string, int] proc foo(models: seq[Table[string, float]]): seq[float] = result = @[] for model in models.items: result.add model["foobar"] # bug #686 type TType[T; A] = array[A, T] proc foo[T](p: TType[T, range[0..1]]) = echo "foo" proc foo[T](p: TType[T, range[0..2]]) = echo "bar" #bug #1366 proc reversed(x: auto) = for i in countdown(x.low, x.high): echo i reversed(@[-19, 7, -4, 6]) block tgeneric1: type TNode[T] = tuple[priority: int, data: T] TBinHeap[T] = object heap: seq[TNode[T]] last: int PBinHeap[T] = ref TBinHeap[T] proc newBinHeap[T](heap: var PBinHeap[T], size: int) = new(heap) heap.last = 0 newSeq(heap.heap, size) #newSeq(heap.seq, size) proc parent(elem: int): int {.inline.} = return (elem-1) div 2 proc siftUp[T](heap: PBinHeap[T], elem: int) = var idx = elem while idx != 0: var p = parent(idx) if heap.heap[idx].priority < heap.heap[p].priority: swap(heap.heap[idx], heap.heap[p]) idx = p else: break proc add[T](heap: PBinHeap[T], priority: int, data: T) = var node: TNode[T] node.priority = priority node.data = data heap.heap[heap.last] = node siftUp(heap, heap.last) inc(heap.last) proc print[T](heap: PBinHeap[T]) = for i in countup(0, heap.last): stdout.write($heap.heap[i].data, "\n") var heap: PBinHeap[int] newBinHeap(heap, 256) add(heap, 1, 100) print(heap) block tgeneric2: type TX = Table[string, int] proc foo(models: seq[TX]): seq[int] = result = @[] for model in models.items: result.add model["foobar"] type Obj = object field: Table[string, string] var t: Obj discard initTable[type(t.field), string]() block tgeneric4: type TIDGen[A: Ordinal] = object next: A free: seq[A] proc newIDGen[A]: TIDGen[A] = newSeq result.free, 0 var x = newIDGen[int]()