Допустим, я определяю некоторый тип в черта, которая должна реализовать некоторый тип класса (как функтора):почему implicits не вызывают в этом сценарии типа зависимых путей
import cats.Functor
import cats.syntax.functor.toFunctorOps
trait Library {
type T[+A]
implicit val isFunctor: Functor[T]
}
Теперь я хочу, чтобы использовать эту библиотеку , Следующие работает отлично:
trait LibraryUser {
val l: Library
import l._
def use: T[Boolean] = {
val t: T[Int] = ???
t.map(_ => true)
}
}
Но при его использовании в способе с параметром вместо этого, импорт неявное не работает (вне комментировал линия не компилируется), и вы должны написать неявное для самостоятельно:
object LibraryUser1 {
def use(l: Library): l.T[Boolean] = {
import l._
val t: T[Int] = ???
//t.map(_ => true)
toFunctorOps(t)(isFunctor).map(_ => true)
}
}
Почему это случай/что можно сделать против него.