F# 3.0 Type Provider 妄想は確信に近づく

アローハ グッモーニン


さて、F# 3.0の新機能 Type Providerについての新報です。
目下調査中ですが、まだType Providerの作成には成功していません。


現在わかる限りの情報を書きたいと思います。
Type Providerの作り方です。

  1. FSharp.Data.TypeProviders.dllを参照する。
  2. カスタム属性 TypeProviderAssembly をつける
  3. ITypeProviderを実装する型はカスタム属性TypeProviderをつける
  4. System.Typeを継承した型を作成する。
  5. TypeProviderは4の型を使って実装する。

これで基本的にはいいはずですが、まだ具体的なところはわかりません。


これまででわかったことですが、どうやらType Providerで受け取れる型引数は、任意長でかつ任意の型みたいです。
これが意味していることは型レベルプログラミングができるということです。
Type Providerで実現できそうなことを列挙してみました。

  1. compile-timeな数値計算(簡単な四則演算からcheck-sumや暗号化まで)
  2. 正規表現のcompile-time構文評価。またMatchのメンバーを生成する。
  3. WPFでViewModelを生成(ViewからBindingのためのプロパティを生成する など)
  4. Compile-Time Sleepメタ関数を作る



Type Converterはこれまでのコードの自動生成に代わるさらにエレガントな手段です。
C++0xD言語を凌ぐ新たなメタプログラミング時代の幕開けになることは間違いないでしょう。


現在、bleisと調査中なので新たなことがわかり次第報告します。
続報を待て