问题标签 [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 回答
1437 浏览

scala - 映射到函数内的 HList

以下代码似乎足以编译和运行

但编译器说“找不到参数映射器的隐式值”。在我的用例中,我想映射一个 HList 以获取 String(s) 的 HList,然后将 String(s) 的 HList 转换为 Scala List[String]。有任何想法吗?

0 投票
1 回答
1005 浏览

scala - Shapeless: Trying to restrict HList elements by their type

Question 1 - Basic LUBConstraints

My first try playing around with existing LUBConstraints fails for missing evidence (see code block below). Any hint why? Isn't an empty list a valid list of longs? no element violates the constraint.

Any help appreciated.

Question 2 - Own Constraint using Coproduct (split into a seperate question: Shapeless: own HList constraint using Coproduct)

Question 3 - restrict case classes by parameter types (split into a separat question: Shapeless: restricting case class types)

0 投票
2 回答
577 浏览

scala - Shapeless:使用 Coproduct 的自己的 HList 约束

(注意:从无形中拆分:尝试通过类型限制 HList 元素

问题 2 - 使用 Coproduct 的自身约束

我真正想做的是使用 Coproduct 编写一个新的约束。

// 隐式 val scpcEmptyLong2: CPConstraint[hlLong.type, CPType] = new CPConstraint[hlLong.type, CPType] {} // 上面的行将适合缺少的隐式 - 为什么???

0 投票
2 回答
198 浏览

haskell - 评估每个节点具有任意数量依赖项的强类型计算图

我想评估一个简单的计算图。我能够为计算图编写代码,其中每个非终端节点都有两个依赖项(这可以很容易地扩展到任何固定数量的依赖项)

问题是:如何扩展此代码,以便注释可以采用任意数量的依赖项?

就像是:

我怀疑这需要一些 typefamily/hlist 巫术,但我什至不知道从哪里开始。欢迎提供解决方案和提示。

0 投票
1 回答
299 浏览

android - 将数据从运行时存储转换为案例类

我正在尝试对android.os.BundleAPI 进行抽象,旨在以这种方式生成 Bundle:

将 case 类转换为 aLabelledGeneric并将键值对写入aBundle很简单。但是我找不到将值从 a 中提取Bundle回其原始类型的方法。我猜那里的众多 JSON 库已经解决了这个问题,但我仍然无法找到如何继续的线索。

另外,有没有办法以我可以编写的方式重组代码Bundle.from[MyClass],而不是Bundle.from[MyClass]()(省略括号)?

0 投票
0 回答
68 浏览

scala - 来自类值的 HList/KList

我希望能够创建一个行为有点像枚举的类/特征(HEnum在下面的第一个片段中)。我不能使用普通枚举,因为每个枚举值都可能有不同的类型(尽管容器类是相同的)Key[A]:。我希望能够大致像这样构造枚举:

然后我希望能够执行或多或少的基本HList操作,例如:

到目前为止,我一直在使用 aHList作为底层数据结构,但事实证明,构建一个具有正确类型的数据结构很困难。我最成功的尝试是这样的:

这里的问题是界面很笨拙。在值列表末尾之外的任何地方添加新值都容易出错,无论如何,您必须在values引入新值时手动更新。我的解决方案不HList涉及List[Key[_]]在需要时将容易出错/不安全的类型转换为正确的类型。

编辑

我还应该提到,这里找到的枚举示例对我来说并不是特别有帮助(尽管,如果可以调整,那就太好了)。为详尽的模式匹配添加的编译器检查很好(我最终希望这样做),但这个枚举仍然只允许枚举值的同质集合。

0 投票
2 回答
72 浏览

generic-programming - (依赖?)输入容器

给定一个类型构造函数/容器F[_],我想创建一个组合器,它可以通过以下规则集将多态类型和 hlist 类型组合到一个新容器中:

  • F[HNil]F[HNil]进入一个F[HNil]
  • F[A]F[HNil]进入一个F[A :: HNil]
  • F[HNil]F[A]进入一个F[A :: HNil]
  • F[A]F[B]进入一个F[A :: B :: HNil]
  • F[L <: HList]F[R <: HList]进入F[L :: R](hlist concat)
  • F[A]F[R <: HList]进入F[A :: R](hlist prepend)
  • F[L <: HList]F[B]进入F[L :: B :: HNil](hlist append)

有没有一种很好的方法可以在无形中做到这一点?或者有没有更简单的方法来解决这个特殊问题:) 问题是我有组合器,它们产生一个F[Int],F[HNil]F[HNil]. 例如,将这些结合起来不应产生F[Int :: HNil :: HNil](but F[Int :: HNil])。为此,我现在制作了 typeclass:

0 投票
1 回答
138 浏览

scala - 我可以使用 shapeless 返回与传递的 HList 相同的 HList 数量吗?

这是一个例子。我正在尝试包装一些接受并返回相同数量的外部 api List

我认为这是学习无形的一个很好的借口,因为它似乎HList可以做到。

如何编码传递HList和返回HList的类型相同?

0 投票
1 回答
359 浏览

scala - 无形 HList 映射

我试试

并且编译器说它需要映射函数中的参数类型,或者在提供类型时找不到listList[_]。有一个简单的映射示例吗?

普通的 Scala 列表没有这样的问题

编译得很好。

0 投票
1 回答
85 浏览

scala - 使用值与参数顺序不匹配的无形 HList 调用 Scala Function2

我想建立相当于:

列表中的值使得在 N 中选择 2 个可能的值组合,l.unify最多有一个可用于调用函数。没有其他类型信息可用。

如果没有办法调用函数,结果应该是Failurewith MatchError。否则,结果应该是Try(f(a1, a2))

我仍然习惯于无形,并希望获得有关如何解决此问题的建议。