【发布时间】:2010-09-29 19:29:59
【问题描述】:
我已阅读 StrangeLights 的简介,已阅读 Expert F# 的 passage(第 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.
我看不出我还能做些什么来使它成为一个函数——我看不到任何隐式参数。
怎么了?
【问题讨论】:
-
我无法在 1.9.6.2 上重现该错误消息,您能展示生成它的整个小程序吗?
-
没有小程序,只是在 FSI 中尝试过,单行给我的错误。
-
交叉引用同一主题的另一个问题:stackoverflow.com/questions/1131456/…
标签: f# units-of-measurement value-restriction