问题标签 [hlist]

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 回答
319 浏览

haskell - 折叠异构,编译时间,列表

我有一个异构类型的列表(或者至少这是我的想法):

现在,给定一个输入 type b,我想遍历所有Bits带有 type的板块b并总结它们,忽略其他带有 type 的板块b' /= b

但是编译器不想要它。并且有充分的理由,因为两个实例声明具有相同的头部。Bits问题:用任意类型折叠的正确方法是什么?

注意:上面的例子是用

0 投票
3 回答
1468 浏览

python - 使用 CheckList 和 Hlist 使用 Python 自动检查 Tix 中的子项

我正在使用 Tix 在 Python 中编写一个小程序,该程序构建并显示具有复选框功能的某些文件夹的树视图(只有其中包含某个 xml 文件的文件夹)。每个项目都是可以选择(选中)的文件夹或子文件夹。我为此使用了 CheckList 和 Hlist

基于这个答案:我设法用复选框显示了我想要的文件夹结构。

问题是,每当检查父项时,我都需要自动检查嵌套项,这样我就不需要遍历同一个父项下的每个项。我在使用 Tix 的文档时遇到了很多麻烦。

互联网上似乎存在关于对象和方法的相互矛盾的信息,并且它们往往因信息来源而异。我几乎可以肯定 Hlist 中没有内置功能可以启用此“自动检查”功能,因此如果我错了,请纠正我,我必须自己开发它。

对此有任何提示或想法吗?我将发布所涉及的代码片段和文件夹树视图

首先,我创建清单并找到我感兴趣的目录:

获得文件夹列表后,我将关联的元素添加到要显示的 Hlist

如果存在元素,我不会创建新条目

你将如何进行?

到目前为止的程序视图

0 投票
1 回答
69 浏览

haskell - 修复 HLists 中的类型推断

我一直在尝试编译一些代码。它的意思是采取 a HList,提取字符串并将它们连接在一起。

不幸的是,当我尝试编译它时,它给了我

我如何说服它使用我声明的实例?

0 投票
1 回答
45 浏览

haskell - 实现 HFoldr 时的类型类

我正在尝试实现一个简单的案例,HFoldr您将 anEndo a应用于a. HList代码如下所示:

如果我 exclude z3,代码会编译,但是当我实际z3输入时,我得到

No instance for (Fail (TypeFound [Char])) arising from a use of ‘hFoldr’ In the expression: hFoldr HUpdateFirst (Endo (++ " X ")) x2 In an equation for ‘z3’: z3 = hFoldr HUpdateFirst (Endo (++ " X ")) x2

据我所知,这是说如果不在列表中,它无法弄清楚该怎么做String,但是a)它是并且b)这就是第一个子句的目的。

我怀疑我的问题可能在于没有更好地理解 Haskell 的推理规则,因此任何关于该主题的指针也会受到赞赏。

0 投票
1 回答
238 浏览

scala - 用于 HList 的 uPickle 编写器

我正在尝试创建自定义uPickleWritershapeless.HList转换为简单数组而不是复杂的嵌套对象。

但我无法提供足够的具体证据,我可以用我的poly

我有这个代码:

和编译错误:

找不到参数的隐式值toTraversableAux: shapeless.ops.hlist.ToTraversable.Aux[mapper.Out,List,upickle.Js.Value]

如何定义函数以通过转换HList为统一?Listmap

0 投票
1 回答
99 浏览

scala - 由 foldRight 过滤的 HList 不提供实例

我在用着libraryDependencies += "com.chuusai" %% "shapeless" % "2.2.4"

目前我有模型 HList 类型,如

在我的用户代码中,我想过滤不应该查看的技术部分,如本答案foldRight中建议的那样:

例如有定义:

折叠工作正常,但突然我无法在此对象上使用以下filtermap,例如此代码:

产生编译错误:

错误:找不到参数分区的隐式值:shapeless.ops.hlist.Partition[shapeless.::[Header,shapeless.::[shapeless.::[Customer,shapeless.::[Supplier,shapeless.HNil]] ,shapeless.HNil.type]],标题]

而这

和这个

编译正常

最近我在 's 结果类型HNil.type的末尾发现很少,foldRight并将我的过滤器定义更改为

一切正常

这是预期的行为吗,如果是,为什么没有一些

在图书馆?

0 投票
1 回答
632 浏览

scala - 未找到 LabelledGeneric 的无形映射器

我有这样定义的基本类型池:

我想介绍一些由这个池中的类型组成的案例类,如下所示:

由于它们将在通过使用此处HList描述的方法转换为 s实现的特征生成器中大量使用,我想确保呈现类型的每个字段都是

  • Section亚型
  • HListSection亚型_
  • 记录可呈现HListSection子类型

我为这种情况定义了简单的编译时检查器:

但它失败了(删除了包名)

找不到参数映射器的隐式值: Mapper[traverseView.type,::[Header with KeyTag[Symbol with Tagged[String("header")],Header],::[ContractViewPartners with KeyTag[Symbol with Tagged[String( "partners")],ContractViewPartners],::[Tech with KeyTag[Symbol with Tagged[String("tech")],Tech],HNil]]]]

如果我从它的工作中删除partners部分ContractView并且如果我尝试解决implicits它们ContractViewPartners也会被发现。

再次在写问题时,我找到了添加.values这样的解决方案

会不会是那种类型with KeyTag[...]不能作为LabelledGeneric转换源正常工作?

0 投票
1 回答
142 浏览

scala - 如何使用 HList 存在成员创建类型类

我正在尝试创建模仿无形类型类的自定义类型类。它看起来像这样:

假设我提供它的功能是这样的:

所以如果我们定义:

然后

如果我尝试获取这里的麻烦

我有

错误:找不到参数的隐式值 c: IsHCons[View[Viewable]#Result]

我如何定义这个类型类以便以后有效地使用它的所有类型成员?

当然我可以摆脱类型成员:

但从此时起

我遇到了“模棱两可的隐含价值”问题

0 投票
1 回答
1283 浏览

scala - 将 Slick 与无形 HList 一起使用

Slick 的支持HList通常是一件好事。不幸的是,它有自己的实现,几乎没有提供任何有用的操作。因此,我想改用无形 HList的。这应该是“微不足道的”,但我不知道如何做到这一点。在网上搜索我没有发现任何证据表明有人设法完成了这项任务。

我认为实现 a 就足够了ProvenShape(如此处所宣传),但由于我无法理解Slick 的 (Proven)Shape概念,因此我没有设法实现它。

我的主要目标是煮这个

向下

0 投票
1 回答
851 浏览

scala - 将无形标签与 LabelledGenerics 一起使用

假设我想遍历这里描述的案例类泛型表示

我已经定义了一些类型类来描述字段:

定义了一些实例:

和普通用户:

所以现在我可以写了

并得到

res1: 字符串 = 点{x: 1,000,y: 2,000,z: 3,000}

现在我想使用shapeless标签定义一些字段元数据:

所以Described(invisible(0.5))现在成功生产

res2: String = 0,500[不可见]

但随着重新定义

产生编译错误:

LeftFolder.Aux[this.Out,Seq[String],DescrFolder.type,Seq[String]] 错误:以类中的方法开头的类型的发散隐式扩展 invisibleDescribed...

我认为该类型X with Tag[Y] with KeyTag[K,X]没有被识别为FieldType[S, X]但无法猜测如何修复它。

如何定义适合LeftFolder这种情况?