【发布时间】:2017-01-08 03:34:29
【问题描述】:
我正在尝试解决以下 Scala 编译器错误。
case class CC[E](l:List[E])
trait D[E,L<:CC[E]]{
def f(l:L):L = l.copy(l=List()) // does not compile: "found CC[E], required: L"
}
在(伪)-Haskell(没有子类型)中,这将类似于:
data CC = CC {l::[e]}
'makeLens CC
f l = l .~ _e []
目前我正在研究 ScalaZ、Shapeless 和 Monocle。
乍一看,Monocle 似乎没有问题(虽然不确定),如果我的直觉错了,请证明我错了。
ScalaZ + Shapeless 可能probably 工作,我不确定如何(从未使用过它们)。
1) 在 Scala 中解决这个问题的最简单方法是什么?
2) ScalaZ 本身就足够了吗?还是无形本身就足够了?还是两者的结合是必要的?或者其他方式?
【问题讨论】:
-
嗯,这似乎是一个答案cakesolutions.net/teamblogs/…
-
有趣,感谢@Jasper-M 的提示
标签: scala scalaz shapeless monocle-scala