In practice you get people complaining about not being able to name their variables the same as their types pretty quickly. Nim used to solve this by using "P" and "T" prefixes ala Pascal/Delphi: type TPerson = object name: string age: int var person: TPerson person.name = "Bob" Run
People see this sort of thing immediately and it was off-putting as well to some people.