2017-04-13 42 views
7

我想用OptionT來結合方法返回Future[Option[T]]在for-comprehension。缺少貓函數[未來]實例

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

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

編譯器錯誤,我越來越:

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

recent example表明,這是(是?)可能的。

所以不要在此pull request for adding OptionT

cats Functor docs

的文檔缺少什麼我在這裏?

謝謝

回答

10

通過導入cats.implicits._你實際上已經導入cats.syntax.AllSyntaxcats.instances.AllInstances

嘗試使用只是那些進口:

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

或(根據您的需要):

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

您可能還需要:

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

注:當然,你必須提供隱含在生產環境中的實際ExecutionContext

+3

刪除導入cats.instances.future._並添加ExecutionContext固定了這個。謝謝你,費德里科。 – kostja

+0

我只使用'import cats.instances.future.catsStdInstancesForFuture',並刪除所有其他相關的貓導入,也可以修復此錯誤 – Freewind