私は次のようなコードを持っています:
type StringValidation[+A] = Validation[String, A]
type WriterValidation[A] = WriterT[StringValidation, String, A]
type Result[A] = WriterValidation[A]
private def someResult: Result[Int]
def implementTrait: Result[Any] = someResult // type mismatch
type mismatch, found Result[Int]
, requiredResult[Any]
を返しますが、次のように変更すると:
type WriterValidation[+A] = WriterT[StringValidation, String, A]
「共変型 A は WriterT の不変位置で発生します...」
操作は概念的には問題ないはずであり、Validation
共分散である可能性があります。なぜWriterT
宣言できなかった(または宣言されていないWriterT[F[_], W, +A]
)の+W
ですか?
scalaz7 スナップショットを使用していますが、6.0.4 の WriterT の宣言は同じであることがわかります。
解決しました。
間違ったバージョンを使用したことが判明しまし"org.scalaz" %% "scalaz-core" % "7.0-SNAPSHOT"
た"org.scalaz" % "scalaz-core_2.9.2" % "7.0.0-M2"
。