With classical proc parameters, the arguments can take variable values.

With proc generic parameters, the generic arguments are now type parameters, 
and the compiler enforces type checking on the generic type values.

With interfaces, you define some named behaviours that some type must have, and 
the compiler can check that these names are defined and also do some type 
(interface) checks. Interfaces are more used in object-oriented languages while 
Nim is more procedural.

Nim has an experimental [concept 
feature](https://nim-lang.org/docs/manual_experimental.html#concepts) where you 
can define a set of properties that apply to a type. When used with generic 
types, concepts should give us more expressive semantic type constraints power 
that could be checked by the Nim compiler.

Reply via email to