F#3.0の新機能

一部方憶測で書きますので、承知ください。


F# 3.0では Type Provider という機能が追加されます。
これはどういったものかというと、型パラメータを持つ任意の型を提供できる機能です。


例えば下記のような型があったとします。


type Netflix = ODataService<"http://odata.netflix.com">

この型はそのURIのODataスキーマがdesign-timeで認識してその型が、定義されます。
これまでCodeGeneratorやCustomToolで自動生成していたものが
それらの呼び出しをdesign-timeで行えるようになったということです。

下記のようなinterfaceから型が提供されます。


public interface ITypeProvider
{
Type GetType(string name,
BindingFlags bindingAttr);
Expression GetInvokerExpression(
MethodBase syntheticMethodBase,
ParameterExpression parameters);
event System.EventHandler Invalidate;
Type
GetTypes();
}

型の生成はGetTypeメソッドでそれに対するメソッド呼び出しの変換がGetInvokerExpression
と推測しています。
あらかた、GetInvokerExpressionがnullを返したらコンパイルエラーになるとかってことじゃないでしょうか。



まったく正しい使い方ではないとは思うが、
Regex<".*">
のようにしてコンパイル時に正規表現の構文チェックができたりするんじゃないかと予想。

1. http://research.microsoft.com/en-us/um/redmond/events/ss2011/slides/thursday/don_syme.pdf
2. http://channel9.msdn.com/Events/PDC/PDC10/FT12

Remove all ads