ジェネリックに関しては 3.0 と 3.1 で大きな違いはないはず
- ランタイム側がフルサポート
- 値型サポート
- 型パラメータの書き方は
'T
"F# generic types do not support covariance or contravariance." (14.5.2 の Note)
"5.2 Type Constraints" に制約の一覧がある。
- comparison, equality, unmanaged
- Member constraintsもある
- コンパイル時に実際の型に置き換えられる型パラメータ
- Member constraint, inline キーワードと組み合わせることで、型クラスを一部エミュレーションできる