我现在已经完成了几个HList的实现。其中一个是基于Daniel Spiewak的Scala之地中的高级巫术演讲,另一个是基于Apocalisp博客中的一篇文章。目标是拥有一个异构列表,其主要类型不是异构的,而是更高级的种类。例如:val requests = Request[String] ...
能否对一个参数列表执行foldLeft操作,其中提供给fold的初始值是完全柯里化函数,运算符是apply,列表是传递给函数f的参数列表? 例如,假设f被定义为:scala> val f = (i: Int, j: Int, k: Int, l: Int) => i+j+k+l ...
我正在编写Slick代码以针对一个包含两个表和超过22列的旧模式。我该如何使用新的HList代码?在Scala 2.10.3下,除此之外我已经成功地使用了2.0-M3。这是我目前使用的与case类/元组相关的语法。如果我要使用文档中提到的新的HLists,我该怎么做? case clas...
我在Scala中使用shapeless,希望编写一个函数allPairs,该函数将获取两个HList并返回所有元素对的HList。例如:import shapeless._ val list1 = 1 :: "one" :: HNil val list2 = 2 :: "two" :: HNi...
问题是否有可能创建一个类似于以下形式的shapeless HList提取器。val a ~ _ ~ b = 4 :: "so" :: 4.5 :: HNil => a == 4 && b == 4.5 将::替换为~,这应该不是问题。 摆脱终止的HN...
我想创建以下相当的内容: def toTupleN[A1, ..., AN, L <: HList](l: L): TupleN[A1, ..., AN] 使用toTupleN的代码只有在l中恰好存在一种N组合值可以创建元组时才能通过编译。其他情况应该生成编译时错误。应考虑可用的隐...
Slick对HList的支持通常是一件好事。不幸的是,它自带的实现几乎没有提供任何有用的操作。因此,我想使用shapeless的HList。这应该很“简单”,但我不知道如何正确实现。在网上搜索时,我发现没有证据表明有人成功完成了这个任务。 我认为只需要实现一个ProvenShape(如此处所...
我目前正在实现一个库,将XML-RPC消息序列化和反序列化。这个库已经快要完成了,但现在我正在尝试使用Shapeless来消除当前的asProduct方法中的样板代码。以下是我的当前代码: trait Serializer[T] { def serialize(value: T): No...
我认为我需要一个HList,它的所有元素都被限制为某种类型的子类型。LUBConstraint似乎是我想要的,确实它限制了这样一个HList的构造 - 但我看不到如何再次获取证据,以便我可以在HList上进行映射(实际上,是遍历,因为它需要是单调的)并调用每个元素上存在于LUB类型的方法。 ...