miran I think your explanation is still too short for beginners... One should know that proc foo(a: seq[int|float|char]) Run
is basically a short form for definition of three separate procs: proc foo(a: seq[int) proc foo(a: seq[float) proc foo(a: seq[char]) Run What would var mySeq : seq[ int | float | string] Run intent? Three separate seqs with different data types and same name? Obviously makes not much sense. Nim is indeed a bit too powerful for people with no basic Computer Science experience.