问题标签 [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.
python - 将定义集中的值设置为熊猫数据框中列的给定值(fe NaN)
具有一组已定义的有效值,其中的所有 pandas 数据框列值都应设置为给定值 fe NaN
。可以假设集合和数据框中包含的值是数字类型。
具有以下有效值集和数据框:
在列上设置有效值a
将导致:
polymorphism - 如何使用可选参数对在 ReasionML/BuckleScript 中生成 Js.t 对象的函数进行 curry?
我有以下功能
由于可以部分应用功能,我希望能够做到这一点:
但它给了我这个错误:
我在这里做错了什么?
f# - 值限制 - 该值已被推断为具有泛型类型
给出以下定义
我可以创建一个部分应用的功能
但是将类型更改_
为非密封类型,例如IEnumerable
导致编译错误
价值限制。值 'fnPartial' 已被推断为具有泛型类型 val fnPartial : ('_a -> int) when '_a :> IEnumerable添加类型注释。(使用内置 F# 编译器)
提出了一个错误,但以以下响应关闭
是的,这是设计使然 - IEnumerable 在字符串所在的位置没有密封,这会导致触发值限制
解决方法是添加类型注释
有人可以解释
- 问题的症结是什么
- 添加类型注释如何解决问题
polymorphism - 为什么 iife 中的包装函数会导致弱类型?
我试图找出一种方法来向模块的用户隐藏某些辅助函数和相关的东西,并认为使用 IIFE 会起作用,但它失败了,因为类型变量不能被泛化?
我想我已经使用以下代码将其归结为最基本的场景:
在 TestB 中,编译器抱怨
这是为什么?我该如何解决y
对模块用户隐藏的问题?
Ps:当重新格式化返回类型注释时,TestB
会放在后面None
这样:(type a, numbers: list(a)) => (None: option(a))
。为什么在这里而不是在模块中TestA
?据我了解,这只是“标记”返回的值,所以我在这里看不出区别吗?
ocaml - reasonml 类型的高阶函数
给定以下模块,编译器会引发错误
这似乎是因为我只是将部分参数应用于reduceList
. 现在,我得到了一些关于价值限制的信息,在我看来,这就是这里发生的事情。
我已经尝试显式键入函数min
及其定义位置,并显式键入整个模块,因为我认为根据本节关于值限制max
的内容,你应该这样解决这个问题。然而,这似乎没有什么区别。
另一方面……_
类型的前导在这里有什么特别的含义吗?
ocaml - 为什么类型推断算法会因为“Fun.flip Option.bind”而混淆?
模块中函数声明的常见签名是最后一个参数具有主状态(Module.t)的类型。就像在“列表”模块中一样。此表单打开了使用“|>”运算符的能力,例如:
但是“选项”模块中的“绑定”函数不遵循这种形式。它具有“Option.t”参数作为第一个
但是,好吧,我可以改变它。我用相反的参数顺序声明了函数'opt_bind'。
但是这个不行。并且以下代码编译时出现以下错误
错误:此表达式具有类型 a -> b 选项,但表达式应为 > type int -> a 选项。a 类型与 int 类型不兼容
同样的情况与
即使在我注意到所有类型之后,我仍然有同样的问题。
但
工作正常。
为什么'opt_bind'对'g'有错误的类型期望,好像'opt_bind'不是通用的?
如何使用带有“|>”符号的“绑定”?
xml - XSD 检查所有元素是否在整个 XML 文件中包含相同的值
我正在寻找一个 XSD 来验证包含具有许多付款的文件元素的 XML 是否具有相同的货币。
例子:
上面的 XML 应该被认为是有效的,因为所有<Currency>
元素都包含相同的货币信息。
但是,以下 XML 应该是无效的,因为它包含至少一笔具有不同货币信息的付款:
我应该为我的 XSD 做些什么?谢谢!
f# - 为什么在这里泛化具有显式类型注释的值?
我在模块范围上的 let 绑定上遇到 VR 错误,说它的一个参数是通用的,但我不知道为什么该参数首先是通用的。这是代码:
错误在最后一行:
错误 FS0030:值限制。 当将参数设为显式时,该值
getVal
已被推断为具有泛型类型val getVal: (HttpFunc -> '_a -> Task<HttpContext option>)
,或者,如果您不打算使其成为泛型,请添加类型注释。'_a :> HttpContext
getVal
我知道它基本上可以概括ctx: HttpContext
为可以转换为HttpContext
. 为什么会这样?为什么只针对这个参数而不是next: HttpFunc
?
HttpContext
是一个类并且HttpFunc
是一个函数类型,这是问题吗?