Вот код:
// eventually will be an implicit class with extension methods
class EitherTWrapper [L,R] (ei: EitherT[Future,L,R])
new EitherTWrapper(??? : EitherT[Future,Nothing,Boolean])
Не скомпилируется с:
type mismatch;
found : cats.data.EitherT[scala.concurrent.Future,Nothing,Boolean]
required: cats.data.EitherT[scala.concurrent.Future,L,Boolean]
Note: Nothing <: L, but class EitherT is invariant in type A.
You may wish to define A as +A instead. (SLS 4.5)
Работает нормально, если я предоставляю типы явно, например:
new EitherTWrapper[Nothing,Boolean](??? : EitherT[Future,Nothing,Boolean])
Что сработало бы, за исключением того, что я не могу этого сделать, если я пытаюсь сделать его неявным классом.
Я ожидал, что это сработает. Как определить класс, который может обернуть EitherT?