gpt4 book ai didi

F# 编译器错误 FS0030,值限制问题

转载 作者:行者123 更新时间:2023-12-02 02:38:04 26 4
gpt4 key购买 nike

我已经在 StrangeLights 阅读了简介, 我读过 passage来自 Expert F#(第 119 页),但我看不到它们如何应用于我的代码:

对于我的测试,我想检查 float 之间的相等性,但要有一点容差。我正在将所有内容转换为度量单位,但我希望能够成为“通用的”:

let toleq (e:float<_>) a b = (abs ( a - b ) ) < e

然后我可以使用它来检查不同“类型”的 float 是否相等,或者将其柯里化(Currying)以制作自定义 float :

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# 中的泛型声明一样丑陋。

关于F# 编译器错误 FS0030,值限制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/416508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com