问题标签 [vinyl]

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.

0 投票
1 回答
214 浏览

haskell - 乙烯基:组成记录类型别名

在 Vinyl 中,我可以为记录定义类型别名,以便更轻松地导出到其他模块:

现在假设我添加了另一个存储高度的字段。

我想很好地为包含 aPerson和的记录构造一个类型别名height。天真地,这可能看起来像这样:

显然,这种语法不起作用!有没有办法做到这一点?是否有任何好的参考资料来解释似乎在这里使用的类型级数组语法?

0 投票
1 回答
224 浏览

haskell - Haskell:在编译时引用值的类型

我想知道是否有一种很好的方法来引用值类型,而无需type在代码中使用显式别名(不是在运行时 - 这里没有具体化)。

采用以下代码(使用Data.Vinyl):

这里我们有类型"name" ::: String"age" ::: Int在两个地方重复。如果我们在多个记录中重用字段,这可能会变成多个地方。尽管Person类型实际上是组成字段,但类型声明是独立的。因此,更改age为 表示Float,需要在各个地方进行更改。

显然,没有必要显式键入内容,因为它们会被推断出来。但是,在我的情况下,记录类型是从选项解析器返回的,因此是导出的。同样,可以编写以下内容:

然而,这涉及到另一个类型别名的负载和双倍的行数。我希望能够写的是以下内容:

这将 a 的类型显式链接Person到其字段的类型。

有没有办法(最好是 sans-TH,但我什至有兴趣涉及 TH)来做到这一点?

0 投票
2 回答
96 浏览

haskell - 乙烯基中的 ISubset 问题

我有以下代码:

当我摆脱它的类型时,drawObject它编译得很好,但是使用我得到的类型

GHC为我推导出的类型是

这作为一种类型签名工作得很好,但ISubset没有。如果我将参数交换为ISubset. 这里发生了什么?

0 投票
0 回答
156 浏览

haskell - 按类型过滤黑胶唱片

使用乙烯基库,有没有办法按类型或其他属性过滤掉一组记录?我希望能够将着色器制服的值与我的对象的其他属性混合,并能够在以后提取它们以调用Graphics.VinylGL.Uniforms.setAllUniforms。我宁愿不使用HList,因为 IMO 乙烯基更好。

0 投票
1 回答
130 浏览

haskell - 代理、类型级符号和 JSON

我正在尝试将自动 json 解析添加到 Data.Vinyl

这是 FromJSON 的一个实例,用于仅包含一个元素的记录。

它几乎可以工作,但我不能满足 KnownSymbol 约束,它似乎会自动在我身上生成一个新的类型变量。

错误是

更多上下文http://lpaste.net/101005

如果我用 替换所有实例sym"name"它可以工作并运行,这很棒。现在,我可以使用模板 Haskell 提前生成所有实例,因为我有一个我将实际使用的字段名称的封闭列表,但这似乎太可惜了。我对 Data.Proxy 几乎一无所知,刚刚看到用于为 Data.Proxy 的记录定义显示实例。

0 投票
1 回答
120 浏览

haskell - 声明适用于具有特定字段的乙烯基记录的约束

我使用乙烯基来声明许多不同的记录类型,其中一些有一个名为Content特定类型的字段LanguageContent。对于依赖于记录中存在的字段的函数,我想要一个类型:

(给出的函数仅用于说明;有许多函数采用某些东西HasContent并用它做不同的事情。)

现在我只需要声明HasContent为一个约束。我可以使用的最接近的Data.Vinyl.Notation是:

可以声明类型族,但函数不进行类型检查:

我可以使用两个有效但不理想rs的参数进行约束(这是我必须在任何地方重复的参数):

如果没有额外的参数(参见@ChristianConkle 的回答),我会得到:

如何声明仅适用于这样的Rec Attr fs约束Content ∈ fs

0 投票
1 回答
144 浏览

haskell - 乙烯基:使用需要由所有字段共享的约束的函数进行 rtraverse

0 投票
1 回答
416 浏览

haskell - 通过蕴涵削弱黑胶唱片的 RecAll 约束

vinyl库中,有一个RecAll类型族,让我们要求部分应用的约束对于类型级别列表中的每个类型都是正确的。例如,我们可以这样写:

这一切都很可爱。现在,如果我们有未知的约束RecAll f rs cc并且我们知道c x蕴含d x(从 ekmett 的约束包中借用语言,我们怎么能得到RecAll f rs d

我问的原因是我正在处理一些需要满足几个类型类约束的函数中的记录。为此,我使用了exists包中Control.Constraints.Combine模块中的:&:组合器。(注意:如果您安装了其他东西,则该软件包将不会构建,因为它依赖于. typeclass broilerplate。例如:contravariant

但是,在这个函数的主体内部,我调用了另一个需要较弱约束的函数。它可能看起来像这样:

GHC 看不到第二个语句是从第一个语句开始的。我以为会是这样。我看不到的是如何证明它以实现它并帮助 GHC。到目前为止,我有这个:

这些工作正常。但这就是我卡住的地方:

这不编译。有没有人知道一种方法来获得我正在寻找的效果。如果它们有帮助,这里是错误。另外,我Dict在我的实际代码中有一个合格的导入,所以这就是它提到的原因Constraint.Dict

0 投票
0 回答
277 浏览

ftp - 乙烯基-ftp 不上传存在的文件夹

我的代码:

控制台输出:

第一次运行一切正常,稍作改动,再次运行gulp ftp,可以看到:进程没有退出,remotePath也无法刷新。我可以做错什么吗?

0 投票
1 回答
1254 浏览

ftp - Gulp vinyl ftp - Remove local deleted files

I use vinyl ftp to deploy my project on remote server. No problem to upload files but i would also like to delete files that aren't anymore in local folder.

Example :

Local folder

Remote folder :

What i have in remote folder for the moment after deploy :

What i would like (exactly same as local folder) :

I could use rmdir to delete all files but that implies to reupload all files for each deploy.

Thank you