我试图将我的Contravariant类型类与语法一起应用,但遇到了找不到它的问题。这是我目前所拥有的:
import cats._
import cats.implicits._
object Test {
type Foo[A] = A => Unit
private val f: Foo[String] = (_: String) => ()
implicit val cvar: Contravariant[Foo] = null
private val FF: Foo[Int] = f.contramap((i: Int) => //error: value contramap is not a member of Foo
String.valueOf(i)
)
}我不明白。我提供了隐式Contravariant[Foo],但是语法无论如何都不会被应用。怎么了?
发布于 2018-08-22 23:10:21
错误是我没有扩展ContravariantSyntax。删除隐式和混合在其中的工作如预期:
import cats._
import cats.syntax.ContravariantSyntax
object Test extends ContravariantSyntax{
type Foo[A] = A => Unit
private val f: Foo[String] = (_: String) => ()
implicit val cvar: Contravariant[Foo] = null
private val FF: Foo[Int] = f.contramap((i: Int) => //compiles - Ok!
String.valueOf(i)
)
}https://stackoverflow.com/questions/51969673
复制相似问题