ほとんどのプログラミング言語には、コンパイル時に型に基づいて実装を選択する何らかの方法があります。関数のオーバーロードは、これを行う一般的な方法です。テンプレートを使用する (C++ または D で、おそらく制約付きで) ことも別のオプションです。
しかし、F# では、クラス メソッドを使用せずにこれを行う方法を見つけることができないため、カリー化などのいくつかの優れたプロパティが失われます。
let f (a:int) =
与えるDuplicate definition of 'f'
F# には静的に解決された型パラメーターがありますが、これをどのように使用できるかわかりません..
let f (a:^T) =
match T with
The value or constructor of T is not defined
で与えますmatch T
let f (a:^T) =
match a with
| :> int as i ->
与えるUnexpected symbol ':>' in expression
let f (a:^T) =
match ^a with
| :> int as i ->
与えるUnexpected infix operator in expression