Extent the type system of C# with many advanced types like streams, tables, tuples, unions, etc..
 E. Meijer and W. Schulte, “Unifying Tables, Objects and Documents”.
The design space
- Denotables values should be (easily) expressible If programmers can declare a variable of a certain type, it must be possible to write a expression of that type in a convenient way.
- Expressible values should be denotable If programmmers can write an expression of a certain type, it must be possible to declare a variable whose static type precisely matches that of the expression.
- No forced identity Programmers should never be forced to introduce either nominal identity of types, or object identity of values (aliasing).
- Orthogonality There should be no special cases that discriminate between tables, documents and objects. Operations should work uniformly across the three worlds.
- Flexibility The new types should have rich subtyping relationships that ease in writing type correct and evolvable software
Streams are implemented using Iterators. They added
yield for adding elements to a stream.
They flatten streams of nested-data-structures
MAYBE in case of nested-data-structure, maybe it is better Dok AG
A nice fact it is that the tool they used, deduce the exact type of a query, and express it as stream, optional values, and variants.