F#コンパイラエラーFS0030、値制限の問題
-
03-07-2019 - |
質問
StrangeLights 、私はエキスパートから passage を読みました。 F#(119ページ)ですが、コードにどのように適用されるかわかりません:
テストのために、少しの許容差でフロート間の同等性をチェックしたいと思います。すべてを測定単位に変換していますが、「汎用」になりたいと思います。
let toleq (e:float<_>) a b = (abs ( a - b ) ) < e
これを使用して、フロートのさまざまな「タイプ」の等価性を確認したり、カレーでカスタムのフロートを作成したりできます。
toleqm = toleq 1.0e-10<m>
しかし、次のメッセージが表示されます:
Type inference has inferred the signature
val toleq : float<'u> -> float<'u> -> float<'u> -> bool
Either define 'toleq' as a simple data term, make it a function, or add a
type constraint to instantiate the type parameters.
それを関数にするためにこれ以上何ができるかわかりません-暗黙のパラメーターは見えません。
最近どうですか?
解決
まあ、少しいじって、必死になって解決策を見つけましたが、理由を理解しているかどうかわかりません...
let toleq (e:float<_>) (a:float<_>) (b:float<_>) = (abs ( a - b ) ) < e
うーん、C#での一般的な宣言とほぼ同じくらいugいです。
所属していません StackOverflow