title: Twitter Future & Cats Arrow
body: <p>I'm trying to combine <strong>Twitter Future</strong> with <strong>Cats Kleisli and Arrow</strong> and I have a compilation error that I don't know how to solve it.</p>
  
  <p>The code is the following:</p>
  
  <pre><code>package com.example
  import scala.language.higherKinds
  
  import cats.arrow.Arrow
  import cats.implicits._
  import cats.data.{EitherT, Kleisli}
  import com.twitter.util.Future
  
  object ArrowApp extends App {
  
    type Resp[A] = EitherT[Future, Exception, A]
    type KleisliResp[A] = Kleisli[Resp, List[Int], A]
  
    val first: KleisliResp[Int] = Kleisli(_ =&gt; EitherT[Future, Exception, Int](Future.value(Right(1))))
    val second: KleisliResp[String] = Kleisli(_ =&gt; EitherT[Future, Exception, String](Future.value(Right("TEST"))))
  
    def combine[F[_, _] : Arrow, A, B, C](fab: F[A, B], fac: F[A, C]): F[A, (B, C)] = Arrow[F].lift((a: A) =&gt; (a, a)) &gt;&gt;&gt; (fab *** fac)
  
    val firstAndSecond: KleisliResp[(Int, String)] = combine(first, second)
  }
  </code></pre>
  
  <p>The error that I get it is: </p>
  
  <pre><code>Error:(20, 31) could not find implicit value for evidence parameter of type cats.arrow.Arrow[[A, B]cats.data.Kleisli[com.example.cats.ArrowApp.Resp,A,B]] 
  val firstAndSecond: KleisliResp[(Int, String)] = combine(first, second)
  </code></pre>
  
  <p>If I replace the <strong>Twitter Future</strong> with <strong>Scala Future</strong> and I import the global executor <strong>import scala.concurrent.ExecutionContext.Implicits.global</strong> then code runs.</p>
  
  <p>My <strong>build.sbt</strong> looks like:</p>
  
  <pre><code>organization := "com.example"
  name := "scala-test"
  version := "1.0"
  scalaVersion := "2.12.3"
  libraryDependencies ++= Seq(
    "org.typelevel" %% "cats-core" % "1.2.0",
    "org.typelevel" %% "cats-free" % "1.2.0",
    "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.0",
    "com.twitter" %% "finagle-core" % "18.3.0"
  )
  scalacOptions ++= Seq("-Ypartial-unification")
  resolvers += Resolver.sonatypeRepo("releases")
  addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.7")
  </code></pre>
  
  <p>Do you have any idea how to fix the compilation error?</p>
  
  <p>Kind regards!</p>