问题标签 [row-polymorphism]
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.
haskell - 推断两条记录中公共字段的类型
如果这是一个愚蠢的问题,请耐心等待。如何键入一个通用函数,该函数接受两条记录并返回其公共字段的数组?
假设我有:
我想编写一个函数,它接受任何两种类型的记录并返回一个公共字段数组。haskell 解决方案也可以。
typeclass - Purescript 行联合
我一直在尝试使用指定 eval 函数的 Component 类型类在 Purescript 中开发一个组件系统。for 的 eval 函数可以由组件为组件的每个子组件递归调用,实质上是获取输入的值。
由于组件可能希望使用运行时值,因此也会将一条记录传递给 eval。我的目标是要求顶级 eval 的 Record 参数中的行包含每个子组件的所有行。这对于本身不使用任何行的组件来说并不太难,但是它们的单个子组件会这样做,因为我们可以简单地将子组件行传递给组件的行。这显示在 中evalIncrement
。
以上所有代码都可以正常工作。但是,一旦我尝试引入一个包含多个输入组件并合并它们的行的组件,我似乎无法让它工作。例如,当尝试使用class Union
from时Prim.Row
:
产生以下错误:
事实上,即使修改evalInc
实例以使用具有空行的虚拟 Union 也会产生类似的错误,如下所示:
我是否错误地使用了联合?还是我的班级需要更多的功能依赖——我不太了解它们。
我正在使用 purs 版本 0.12.0
record - 使用部分定义或默认定义 `type alias`
有没有办法干燥这个?
我不想contents : List Nav
重复wrapperId : String
ocaml - 结合参数多态性和多态变体(反引号类型)
假设我有一个由多个多态变体(协变)组成的类型,例如:
让我们进一步假设我想将此定义分解为某种类型的构造函数和一个具体的类型int
。我的第一次尝试如下:
但是,使用这样的定义会产生一个非常奇怪的类型错误,其中提到了一个'b
没有出现在定义中的任何地方的类型变量。
这'b
是一个自动生成的名称,添加显式'b
将变量转换为'c
.
在这种情况下,使用不变构造[ `Thing1 of type1 | `Thing2 of type 2 ]
似乎可以正常工作。
但是,将类型参数显式标记为协变并不能挽救原始示例。
而且,为了更好地衡量,添加逆变注释也不起作用。
试图猜测编译器将用于未绑定类型变量的名称并将其作为参数添加到左侧也不起作用,并且会产生非常奇怪的错误消息。
有没有办法制作一个可以有效地“替换不同类型”的类型构造函数 int in [> `Ok of int | `Error of string]
?
json - 如何在 PureScript 中使用 SimpleJSON 解析行多态记录?
我编写了一个实用程序类型和函数,旨在帮助解析某些行多态类型(特别是,在我的情况下,任何扩展的东西BaseIdRows
:
但是,当我尝试使用它时,它会导致代码出现这种类型错误(在我更大的代码库中,在我实现该readIdTypePair
功能之前一切正常):
我有一个现场要点可以证明我的问题。
但是,为了后代,这里是完整的例子: