Generic procedures are just splendid, this seems to be a bug that it fails to validate that it's possible to instantiate the generic after sem checking type Addable = concept c, type T c + c is T Coll = concept c typeof(c.items) AddableColl[T] = concept c T is typeof(c.items) typeof(c.items) is Addable c is Coll proc sum[T](nums: AddableColl[T]): T = for num in nums.items: result += num echo @[0, 1, 2].sum() echo @["0", "1", "2"].sum() Run
Is an old style working version of what you're after.