web-dev-qa-db-ger.com

missing Cats Functor [Future] -Instanz

Ich versuche, OptionT zu verwenden, um Methoden zu kombinieren, die Future[Option[T]] in einer verständlichen Form zurückgeben. 

import cats.data._
import cats.implicits._
import cats.instances.future._

for {
  data <- OptionT(repo.getData(id))
  ... 
}

Der Compiler-Fehler, den ich bekomme: 

could not find implicit value for parameter F cats.Functor[scala.concurrent.Future]

Dieses aktuelles Beispiel legt nahe, dass dies möglich ist (war?).

ebenso die Dokumente in der pull-Anforderung zum Hinzufügen von OptionT

und die Katzen Functor docs

Was fehlt mir hier?

Vielen Dank

17
kostja

Durch den Import von cats.implicits._ importieren Sie tatsächlich cats.syntax.AllSyntax und cats.instances.AllInstances

Verwenden Sie nur diese Importe:

import cats.data._
import cats.implicits._

oder (nach Ihren Bedürfnissen):

import cats.data._
import cats.instances.future._

oder genauer:

import cats.data._
import cats.instances.future.catsStdInstancesForFuture

sie können auch benötigen:

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

Hinweis: Natürlich müssen Sie implizit eine tatsächliche ExecutionContext in einer Produktionsumgebung angeben.

22

Nach Importen arbeiten für mich (auch in zugelassener Antwort ) erwähnt,

import cats.data.OptionT
import cats.instances.future._ // or import cats.implicits._ 
                               // as implicits include FutureInstances

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

Das Wichtigste waren auch die Abhängigkeiten, während ich org.typelevel:cats:0.9.0 zusammen mit cats-core-1.1.0 verwendete, was Symbol 'type cats.kernel.instances.EqInstances' is missing from the classpath. verursachte.

Musste älteren cats-0.9.0 entfernen und neueste cats-core und cats-kernel verwenden.

libraryDependencies ++= Seq(
  "org.typelevel" %% "cats-core" % "1.1.0",
  "org.typelevel" %% "cats-kernel" % "1.2.0",

  "org.scalatest" %% "scalatest" % "3.0.4" % Test
)
0
prayagupd