Skip to content

Misleading error for type class instances related to Future #670

@lambdista

Description

@lambdista

When using Future-related type classes you get a misleading error: could not find implicit value for parameter instance.... It's as if it cannot find an instance of the given type class for Future in scope when it actually cannot just find an ExecutionContext. Example, with a REPL session, for Functor:

scala> import scala.concurrent.Future
import scala.concurrent.Future

scala> import cats.Functor
import cats.Functor

scala> import cats.std.future._
import cats.std.future._

scala> Functor[Future].map(Future.successful(42))(_ + 1)
<console>:16: error: could not find implicit value for parameter instance: cats.Functor[scala.concurrent.Future]
       Functor[Future].map(Future.successful(42))(_ + 1)
              ^

but after importing the default ExecutionContext it works:

scala> import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.ExecutionContext.Implicits.global

scala> Functor[Future].map(Future.successful(42))(_ + 1)
res1: scala.concurrent.Future[Int] = scala.concurrent.impl.Promise$DefaultPromise@6335ab80

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions