问题标签 [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.
scala - 映射到函数内的 HList
以下代码似乎足以编译和运行
但编译器说“找不到参数映射器的隐式值”。在我的用例中,我想映射一个 HList 以获取 String(s) 的 HList,然后将 String(s) 的 HList 转换为 Scala List[String]。有任何想法吗?
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)
scala - Shapeless:使用 Coproduct 的自己的 HList 约束
(注意:从无形中拆分:尝试通过类型限制 HList 元素)
问题 2 - 使用 Coproduct 的自身约束
我真正想做的是使用 Coproduct 编写一个新的约束。
// 隐式 val scpcEmptyLong2: CPConstraint[hlLong.type, CPType] = new CPConstraint[hlLong.type, CPType] {} // 上面的行将适合缺少的隐式 - 为什么???
haskell - 评估每个节点具有任意数量依赖项的强类型计算图
我想评估一个简单的计算图。我能够为计算图编写代码,其中每个非终端节点都有两个依赖项(这可以很容易地扩展到任何固定数量的依赖项)
问题是:如何扩展此代码,以便注释可以采用任意数量的依赖项?
就像是:
我怀疑这需要一些 typefamily/hlist 巫术,但我什至不知道从哪里开始。欢迎提供解决方案和提示。
android - 将数据从运行时存储转换为案例类
我正在尝试对android.os.Bundle
API 进行抽象,旨在以这种方式生成 Bundle:
将 case 类转换为 aLabelledGeneric
并将键值对写入aBundle
很简单。但是我找不到将值从 a 中提取Bundle
回其原始类型的方法。我猜那里的众多 JSON 库已经解决了这个问题,但我仍然无法找到如何继续的线索。
另外,有没有办法以我可以编写的方式重组代码Bundle.from[MyClass]
,而不是Bundle.from[MyClass]()
(省略括号)?
scala - 来自类值的 HList/KList
我希望能够创建一个行为有点像枚举的类/特征(HEnum
在下面的第一个片段中)。我不能使用普通枚举,因为每个枚举值都可能有不同的类型(尽管容器类是相同的)Key[A]
:。我希望能够大致像这样构造枚举:
然后我希望能够执行或多或少的基本HList
操作,例如:
到目前为止,我一直在使用 aHList
作为底层数据结构,但事实证明,构建一个具有正确类型的数据结构很困难。我最成功的尝试是这样的:
这里的问题是界面很笨拙。在值列表末尾之外的任何地方添加新值都容易出错,无论如何,您必须在values
引入新值时手动更新。我的解决方案不HList
涉及List[Key[_]]
在需要时将容易出错/不安全的类型转换为正确的类型。
编辑
我还应该提到,这里找到的枚举示例对我来说并不是特别有帮助(尽管,如果可以调整,那就太好了)。为详尽的模式匹配添加的编译器检查很好(我最终希望这样做),但这个枚举仍然只允许枚举值的同质集合。
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:
scala - 我可以使用 shapeless 返回与传递的 HList 相同的 HList 数量吗?
这是一个例子。我正在尝试包装一些接受并返回相同数量的外部 api List
:
我认为这是学习无形的一个很好的借口,因为它似乎HList
可以做到。
如何编码传递HList
和返回HList
的类型相同?
scala - 无形 HList 映射
我试试
并且编译器说它需要映射函数中的参数类型,或者在提供类型时找不到list
值List[_]
。有一个简单的映射示例吗?
普通的 Scala 列表没有这样的问题
编译得很好。
scala - 使用值与参数顺序不匹配的无形 HList 调用 Scala Function2
我想建立相当于:
列表中的值使得在 N 中选择 2 个可能的值组合,l.unify
最多有一个可用于调用函数。没有其他类型信息可用。
如果没有办法调用函数,结果应该是Failure
with MatchError
。否则,结果应该是Try(f(a1, a2))
。
我仍然习惯于无形,并希望获得有关如何解决此问题的建议。