Data querying
So far in the book, the sources of data collections were either collection generators or the file system. Let me move toward more realistic enterprise data sources, where data are persisted in databases. To access and transform such data, F# provides query expressions (https://msdn.microsoft.com/visualfsharpdocs/conceptual/query-expressions-%5bfsharp%5d).
Query expressions represent a concrete type of computation expressions that is embedded into the language. They allow to bring data into memory by querying external sources and transforming incoming data to the desired shape.
The F# query expressions are akin to sequence expressions: both produce data sequences. However, before the final data projection shaping the produced data sequence a query expression may apply to data a wide variety of data transformations that are similar to what we used to see in LINQ (https://en.wikipedia.org/wiki/Language_Integrated_Query). Query expressions can be considered LINQ support in F#...