型プロバイダーは、F#の面白いフィーチャである。開発者の観点から言えば、それらは静的に定義されたあらゆる型のようである。しかし、CLRアセンブリのメタデータから来るより、設計時に実行されるコードによって必要な時に生成される。ソースは何でもよく、データベース、REST, あるいはODataスタイルのwebサービスが最も共通のオプションである。
2011年の記事で、Ivan Towlson 氏がいかに開発者が外部サービスを見ないコードにおいて、型プロバイダーを作成して、決まりきったコードを減らすことができるかを示した。彼の例は長さが変わるベクター型と同じものに適用する共通の操作を作成した。
彼と他の人の成果はFSharpxプロジェクトに移された。その中には、9つの型プロバイダーセットがあり、直接使うこともできるし、ヒントに使って自分独自のものを作ることもできる。
- FSharpx.TypeProviders.AppSettings
- FSharpx.TypeProviders.Documents
- FSharpx.TypeProviders.Excel
- FSharpx.TypeProviders.Freebase
- FSharpx.TypeProviders.Graph
- FSharpx.TypeProviders.Machine
- FSharpx.TypeProviders.Math
- FSharpx.TypeProviders.Regex
- FSharpx.TypeProviders.Xaml
FSharpxは、Apache License, Version 2.0のもとで提供されているオープンソースプロジェクトである。
統計分析言語Rを頼りにしている人々には、 Blue MountainがF# R Type Providerを提供している。この型プロバイダーもオープンソースプロジェクトとして提供されている。標準的でない、非常に寛大なライセンスである。
F#の型プロバイダーについてもっと知りたければ、 Joe Pamerのビデオ、F#の将来:型プロバイダーとMicrosoft Researchの論文F#3.0 インターネット規模の情報ソースをサポートする強い型付け言語を見ると良い。
同様な機能を提供している他の言語を見るのも役立つだろう。そのような言語の1つがGosuである。このJVMベースの言語は彼らが言うオープン型システムを使っている。 Cedric Beust氏がオープン型システムへの良い入門記事を書いており、更に深い議論への多くのリンクを含んでいる。