Dynamic typing allows container types, like lists or arrays, to contain mixtures of values of arbitrary types. Example Consider a program for reading and sorting an array. But suppose we'd like the same program to work on arrays containing both integers and floats. Now the elements of a can be of different types, so long as read and sort know how to check for and operate correctly on values of these types. Generally, each array element will need to be tagged with the correct type.
Recursive types are a problem.
Type Names Question becomes more interesting because of type names. As a way of improving program correctness by sub- dividing values into types according to their meaning within the program. Most languages use mixed solutions. C Type Equivalence C uses structural equivalence for array and function types, but name equivalence for struct, union, and enum types. A Type defined by a typedef declaration is actually just an abbreviation for an existing type.