Scala猫和Either的遍历语法-无法编译

时间:2018-09-07 12:46:34

标签: scala applicative scala-cats

我正在尝试使用cats库https://typelevel.org/cats/typeclasses/traverse.html中的traverse(或与我的任务几乎相同的sequence)。我想遍历具有功能List[A]的{​​{1}}以获得A => Either[L,R]的结果。

考虑以下小示例(我使用scala-2.12.6,cats-core-1.3.1,sbt-1.1.2):

Either[L,List[R]]

它不编译,它给出:

import cats.implicits._

def isOdd(i: Int): Either[String, Int] = 
  if (i % 2 != 0) Right(i) else Left("EVEN")

val odd: Either[String, List[Int]] = (1 to 10).toList.traverse(isOdd)

1 个答案:

答案 0 :(得分:1)

部分统一编译器标志是必需的。在Scala 2.12中

scalacOptions += "-Ypartial-unification"中添加build.sbt

感谢托马斯