问题标签 [value-restriction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - F# 编译器错误 FS0030,值限制问题
我读过StrangeLights的简介,我读过 Expert F# 的文章(第 119 页),但我看不出它们如何应用于我的代码:
对于我的测试,我想检查浮点数之间的相等性,并有一点宽容。我正在将所有内容转换为度量单位,但我希望能够成为“通用”:
然后我可以使用它来检查不同“类型”浮点数的相等性,或者将其咖喱制作一个自定义的:
但我收到以下消息:
我看不出我还能做些什么来使它成为一个函数——我看不到任何隐式参数。
这是怎么回事?
generics - 保持部分应用函数通用
是否可以部分应用一个功能,例如bprintf
并防止它根据其初始用途受到限制?
我想做以下事情:
f# - F# 值限制
我已经阅读了有关 F# 中值限制的所有内容,但我仍然不明白。我有以下代码:
并且编译器显示错误:
谁能帮我?非常感谢你;)
generics - 如何使我的功能通用
我似乎找不到使 csvList 或其部分应用的助手 listIntoJsonArray 或 listIntoJsonObject 通用的魔法酱。
谢谢您的帮助。
f# - 摆脱价值限制错误
在 OCaml 中
在 F# 中
我应该怎么做才能将空列表作为参数传递而不触发值限制错误?
f# - 又一个价值限制问题
在下面的代码Seq.generateUnique
中被限制为 type ((Assembly -> seq<Assembly>) -> seq<Assembly> -> seq<Assembly>)
。
我希望它是通用的,但是将其放入文件中而不是使用它会产生值限制错误:
价值限制。值 'generateUnique' 已被推断为具有通用类型 val generateUnique : (('_a -> '_b) -> '_c -> seq<'_a>) 当 '_b :> seq<'_a> 和 '_c : > seq<'_a> 要么显式地设置 'generateUnique' 的参数,或者,如果你不打算让它是通用的,添加一个类型注解。
添加显式类型参数 ( let generateUnique<'T> = ...
) 可消除错误,但现在它返回不同的结果。
没有类型参数的输出(期望/正确的行为):
与:
为什么行为会改变?我怎样才能使函数通用并实现所需的行为?
f# - 如何在 F# 中声明泛型参数?
给定以下代码:
最后一行给出了错误:This expression was expected to have type int but here has type string
我认为以下可能有效,但它没有:
我的问题是,如何定义 NotWorking 函数以使 display 参数在函数中保持通用?
list - 空列表中的 F# 值限制
我有一个 F# 函数:
它删除列表中偶数索引处的所有元素。如果我给列表一些输入,它会起作用,就像removeEven ['1';'2';'3']
我得到['1';'3']
的那样。但是当我插入一个空列表作为参数时,我得到了这个错误:
stdin(78,1):错误 FS0030:值限制。值“it”已被推断为具有泛型类型
val it : '_a list 将 'it' 定义为一个简单的数据项,使其成为具有显式参数的函数,或者,如果您不希望它是通用的,则添加一个类型注释。
帮忙,有人吗?
f# - 没有泛型参数时的值限制
let makeElem
我在以下代码中得到值限制错误:
elemCreator
如果从返回的匿名函数没有任何泛型参数,为什么会出现值限制错误?
编译器声明 makeElem 的推断类型是(string -> 'a -> XmlNode)
. 但是为什么它推断出第二个参数就像'a
我已经声明它一样obj
?