150得票4回答
HLists是否只是写元组的复杂方式?

我很感兴趣了解HLists和一般列表相比的差异,更普遍地说,要确定哪些情况下不能使用HLists(或者说,相对于普通列表没有任何优势)。 (我知道Scala中有22个TupleN,而只需要一个HList,但这不是我感兴趣的概念差异。) 下面的文本中我标记了一些问题。实际上回答它们可能并不必要,...

30得票3回答
在Scala HList上可以执行Map操作吗?

我现在已经完成了几个HList的实现。其中一个是基于Daniel Spiewak的Scala之地中的高级巫术演讲,另一个是基于Apocalisp博客中的一篇文章。目标是拥有一个异构列表,其主要类型不是异构的,而是更高级的种类。例如:val requests = Request[String] ...

22得票3回答
在Scala中使用foldLeft将参数列表应用于柯里化函数

能否对一个参数列表执行foldLeft操作,其中提供给fold的初始值是完全柯里化函数,运算符是apply,列表是传递给函数f的参数列表? 例如,假设f被定义为:scala> val f = (i: Int, j: Int, k: Int, l: Int) => i+j+k+l ...

16得票2回答
如何使用新的Slick 2.0 HList来克服22列限制?

我正在编写Slick代码以针对一个包含两个表和超过22列的旧模式。我该如何使用新的HList代码?在Scala 2.10.3下,除此之外我已经成功地使用了2.0-M3。这是我目前使用的与case类/元组相关的语法。如果我要使用文档中提到的新的HLists,我该怎么做? case clas...

14得票1回答
从两个HList中创建所有配对的HList

我在Scala中使用shapeless,希望编写一个函数allPairs,该函数将获取两个HList并返回所有元素对的HList。例如:import shapeless._ val list1 = 1 :: "one" :: HNil val list2 = 2 :: "two" :: HNi...

14得票1回答
一个模拟解析器连接符`~`的shapeless HList提取器

问题是否有可能创建一个类似于以下形式的shapeless HList提取器。val a ~ _ ~ b = 4 :: "so" :: 4.5 :: HNil => a == 4 && b == 4.5 将::替换为~,这应该不是问题。 摆脱终止的HN...

13得票1回答
将无形的HList转换为TupleN,其中元组的形状不一定要完全匹配HList的形状。

我想创建以下相当的内容: def toTupleN[A1, ..., AN, L <: HList](l: L): TupleN[A1, ..., AN] 使用toTupleN的代码只有在l中恰好存在一种N组合值可以创建元组时才能通过编译。其他情况应该生成编译时错误。应考虑可用的隐...

12得票1回答
使用Slick和shapeless HList

Slick对HList的支持通常是一件好事。不幸的是,它自带的实现几乎没有提供任何有用的操作。因此,我想使用shapeless的HList。这应该很“简单”,但我不知道如何正确实现。在网上搜索时,我发现没有证据表明有人成功完成了这个任务。 我认为只需要实现一个ProvenShape(如此处所...

11得票2回答
如何使用属性和类型类定义无形的case类?

我目前正在实现一个库,将XML-RPC消息序列化和反序列化。这个库已经快要完成了,但现在我正在尝试使用Shapeless来消除当前的asProduct方法中的样板代码。以下是我的当前代码: trait Serializer[T] { def serialize(value: T): No...

9得票1回答
保留证据的HList LUB约束

我认为我需要一个HList,它的所有元素都被限制为某种类型的子类型。LUBConstraint似乎是我想要的,确实它限制了这样一个HList的构造 - 但我看不到如何再次获取证据,以便我可以在HList上进行映射(实际上,是遍历,因为它需要是单调的)并调用每个元素上存在于LUB类型的方法。 ...