下記のScalaコンパイラエラーを解決しようとしています。現在、私はScalaZ、型崩れやモノクルに探していますScalaのコピーメソッドとサブタイプの多型
data CC = CC {l::[e]}
'makeLens CC
f l = l .~ _e []
:これはようなものになるだろう(サブタイピングなし)(擬似)-Haskellで
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"
}
。
一見して、単眼が疑問に思っていないようですが、私の直感が間違っていれば間違っていることを証明してください。
ScalaZ +シェイプレスかもしれないprobably仕事、私は確信しています(それらを使用したことはありません)。
1)Scalaでこれを解決する最も簡単な方法は何ですか?
2)ScalaZ自体で十分でしょうか?またはシェイプレスで十分ですか?または、2つの必要性の組み合わせですか?それとも別の方法ですか?
をうーん、これは答えhttp://www.cakesolutions.net/teamblogs/copying-sealed-trait-instances-a-journey-throughのようです-generic-programming-and-shapeless – jhegedus
これも関連しています:http://stackoverflow.com/a/41000237/1374461 –
面白い、ヒント@ジャスパー-M – jhegedus