Regarding assignment, it doesn't have to depend on types being
indistinguishable. E.g.:
proc p(x: int) = echo "int"
proc p(x: int8) = echo "int8"
var x: int8
x=3 # implicit conversion
p x # int8
p 3 # int
overloading works here, while allowing literal's assignment with implicit conversion.
