小编pon*_*ite的帖子

无形:通过案例类或字段参数化的通用镜头

基于:

import shapeless._

case class Content(field: Int)
lens[Content] >> 'field
Run Code Online (Sandbox Code Playgroud)

我正在尝试制作镜头创建方法,其中包括:

def makeLens[T <: Product](s: Symbol) = lens[T] >> s
Run Code Online (Sandbox Code Playgroud)

但这似乎并不明显.有可能吗?

如果没有,我想要实现的最终结果是使用案例类内容更新嵌套映射的通用方法,例如:

import scalaz._
import Scalaz._
import PLens._
import shapeless._
import shapeless.contrib.scalaz._

def nestedMapLens[R, T <: Product](outerKey: String, innerKey: Int, f: Symbol) =
  ~((lens[T] >> f).asScalaz) compose mapVPLens(innerKey) compose mapVPLens(outerKey)
Run Code Online (Sandbox Code Playgroud)

当用T和f参数化时,我无法使它工作.还有其他惯用的无样板解决方案吗?

谢谢!

scala scalaz lenses shapeless

9
推荐指数
1
解决办法
1279
查看次数

一系列类型的抽象

假设我们有一个类型T[A,B],我们可以表达以下类型约束,让我们调用它HT:

满足的每一种类型都HT必须是形式的T[P1, P2] :: T[P2, P3] :: T[P3, P4] :: ... :: T[PN-1, PN] :: HNil

对于一些type x = P1 :: P2 :: ... :: PN :: HNil.

我试图在类型化的顺序处理管道上找到一个抽象.

scala scalaz shapeless

7
推荐指数
1
解决办法
130
查看次数

标签 统计

scala ×2

scalaz ×2

shapeless ×2

lenses ×1