Generics have the same priority on overload meaning:
    
    
    proc foo[T](n: T) = discard
    
    proc foo[T: int](n: T) = discard
    
    
    Run

will both lead ambiguous calls even if you pass an int because they are generic.

The following will not: 
    
    
    proc foo[T](n: T) = discard
    
    proc foo[T](n: int) = discard
    
    
    Run

Regarding conflicts, you have 2 solutions:

  * version control, hopefully will be improved when nimble supports lockfiles 
so we can have granularity at the commit level
  * module namespacing. Instead of calling with foo, call with 
mymodule.foo(arg1, arg2)



I don't buy the argument of serious programming language, both C and Go are 
serious languages without generics at all.

Reply via email to