Comment by sfn42
Lots of languages can infer types. And your last example with the colors is just a dictionary.
Lots of languages can infer types. And your last example with the colors is just a dictionary.
I certainly don't mean to knock nominal types. But I think structural types are more fundamental. A language would only need a single "newtype" or "nominal" keyword to create nominal types from structural types.
dictionaries generally aren't guaranteed to contain an entry for every possible value of the key type. while you could implement the colors example with a dictionary, ideally you'd want the type system to assure that given a Color, there will be a string associated with it
Most languages have poor support for structural types though. If you try and join two records together (like a SQL join), what will your favourite language infer then?