There are many data sources that have only a loosely defined structure. Examples include REST services and XML files. Using them from statically typed languages has always been problematic. Although all of these data sources have a structure, there is an impedance mismatch between explicit types in our languages and a structure that is implicit in our data sources.
In this talk, we look how to solve the problem at three different scales. At small scale, we can use support for dynamic typing in C# and F#. At medium scale, we can define the structure using functional data types and view the world through the “structural glasses” we defined. At the larger scale, we will be able to solve the problem using type providers. Type providers is a future F# technology that gives us a way to automatically import external data sources into our language and treat them as first-class citizens.