Anonymous types for a programming language. Non-denotable anonymous types
are types that a compiler generates on behalf of a programmer and can
then be used as nominal types. Insofar as anonymous types do not have a
name, they can be used only inside a method in which they are created.
Additionally, an anonymous type cannot be exposed in any way outside of
the method. Syntax to create an anonymous type is useful when employed
with a Select operator to generate a result with a particular shape,
without the need of having a regular type for it. Anonymous types are
expressible such that an expression of that type can be written.
Translation of an anonymous type by a compiler generates a nominal class
that implements Equals and GetHashCode methods. There is equivalence of
anonymous types within the same method, and conversion of an unrealized
structural type into structurally compatible nominal type.