複数のタイプのパラメーター (int と int64 など) で機能する関数を定義する方法を見つけようとしています。私が理解しているように、関数のオーバーロードは F# では不可能です (確かにコンパイラは文句を言います)。たとえば、次の関数を考えてみましょう。
let sqrt_int = function
| n:int -> int (sqrt (float n))
| n:int64 -> int64 (sqrt (float n))
もちろん、コンパイラは構文が無効であると不平を言います(パターンマッチングの型制約はサポートされていないようです)が、これは私が達成したいことを示していると思います.タイプ。これは、ジェネリック型/型推論/パターン マッチングの組み合わせを使用する F# で可能であると感じていますが、構文がわかりませんでした。:? も使用してみました。演算子 (動的型テスト) とwhen句をパターン マッチング ブロックに追加しますが、これでもすべての並べ替えエラーが発生します。
私は言語に慣れていないので、ここで不可能なことをしようとしている可能性が非常に高いので、別の解決策があれば教えてください。