質問

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いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top