2017-04-13 15 views
7

Próbuję użyć OptionT, aby połączyć metody zwracające Future[Option[T]] w zrozumieniu.Brak instancji Cats Functor [Future]

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

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

Błąd kompilatora Dostaję:

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

Ten recent example sugeruje, że jest (był?) Możliwe.

tak zrobić docs w pull request for adding OptionT

i cats Functor docs

Co ja tu brakuje?

Dziękuję

Odpowiedz

10

Poprzez import cats.implicits._ jesteś rzeczywiście już importowanie cats.syntax.AllSyntax i cats.instances.AllInstances

spróbuj użyć tylko te importu:

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

lub (w zależności od potrzeb):

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

można również potrzebować:

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

Uwaga: oczywiście trzeba bezwarunkowo zapewnić rzeczywistą ExecutionContext w środowisku produkcyjnym.

+3

usuwanie importu cats.instances.future._ i dodanie tego ExecutionContext. Dziękuję, Federico. – kostja

+0

Używam tylko "import cats.inlugi.future.catsStdInstancesForFuture" i usuwam wszystkie inne powiązane koty importowane, także ten błąd można naprawić – Freewind

Powiązane problemy