scala - 无法在带有cats库的函数中调用map方法

标签 scala scala-cats

我正在阅读 Advanced Scala With Cats。我在仿函数描述(第 59 页)中坚持了这个例子:

object FunctorsDemo extends App {

  import cats.instances.function._
  import cats.syntax.functor._

  val func1 = (x: Int) => x.toDouble
  val func2 = (y: Double) => y * 2

  val func3 = func1.map(func2) // wrong line for me

}

在书中一切都很好,但我有这个异常(exception):
Error:(10, 21) value map is not a member of Int => Double
  val func3 = func1.map(func2)

无法理解我做错了什么。

最佳答案

这是一种具有其适用的确切版本号的配置:

构建.sbt:

libraryDependencies += "org.typelevel" %% "cats-core" % "1.1.0"
scalaVersion := "2.12.5"
scalacOptions += "-Ypartial-unification"

代码( FunctionIntDoubleFunctor.scala 在与 build.sbt 相同的目录中):
object FunctionIntDoubleFunctor {

  def main(args: Array[String]) {
    import cats.syntax.functor._

    import cats.instances.function._

    val func1 = (x: Int) => x.toDouble
    val func2 = (y: Double) => y * 2


    val func3 = func1.map(func2)
    println(func3(21)) // prints 42.0
  }

}

菊石与 @ interp.configureCompiler(_.settings.YpartialUnification.value = true)在完全相同的代码上惨遭失败,我不知道为什么,所以可能与您使用的工具有关。

关于scala - 无法在带有cats库的函数中调用map方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355375/

相关文章:

scala - 猫效应: Avoid calling unsafeRun on external listener of T => Unit

scala - 如何从cats State创建cats IO monad

scala - 解释自由 monad 列表与解释列表的自由 monad

scala - Scala 中的延续传递风格

scala - 范畴论中的 `filter`是什么态射?

scala - 不能在自写的 monad 实例上使用 flatMap 作为扩展方法

scala - 我如何解释 fold 和 foldK 之间的区别?

java - Play 2.0 框架 - 自定义表单域

scala - 方法迭代器和 View 之间有什么区别?

Scala:过滤元组列表以获得非空列表