Псевдоним типа и неявное разрешение значения

Я предполагаю, что это легко, но я столкнулся с проблемой, когда 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._

Другие вопросы по тегам