Псевдоним типа и неявное разрешение значения
Я предполагаю, что это легко, но я столкнулся с проблемой, когда FlatMap или Functor задачи Monix не могут быть найдены. Я использую "псевдоним типа", чтобы упростить сигнатуру длинного типа, но затем в for-comprehession я получаю ошибку "Не удалось найти неявное значение". Если я удаляю псевдоним типа, он работает, потому что Monix поддерживает кошек. Будет ли у кого-нибудь предложение о том, как сообщить компилятору, что TaskEither является задачей Monix и может просто использовать экземпляры cat, предоставленные Monix Task. Введите псевдоним:
type TaskEither[A] = Task[Either[Erratum, A]]
Метод, где возникает ошибка: Примечание: getBotForUser и processBotDetails обернуты в Kleisli, аналогично методу findCreateBot
def findCreateBot(msg: Routing): Kleisli[TaskEither, DBRepo[MySQLProfile, ServiceConfig[Config]], ActorRef] ={
import Task._
for {
bot <- XmppRepository[MySQLProfile, ServiceConfig[Config]].getBotForUser(msg.routingHeader.to.userID)
botRef <- processBotDetails(bot)
} yield botRef
}
сообщение об ошибке:
XMPPGateway.scala:61:14: could not find implicit value for parameter F: cats.Functor[MyTypes.TaskEither]
[error] botRef <- processBotDetails(bot)
[error]
^
сообщение об ошибке:
XMPPGateway.scala:60:11: could not find implicit value for parameter F: cats.FlatMap[MyTypes.TaskEither]
[error] bot <- XmppRepository[MySQLProfile, ServiceConfig[Config]].getBotForUser(msg.routingHeader.to.userID)
[error]
^
1 ответ
Если вы используете кошек либо, вы должны импортировать cats.data._ import cats.implicits._