1

我有以下代码,我从这里得到的:http: //underscore.io/blog/posts/2015/06/10/an-introduction-to-cats.html

import cats.data.Xor
import cats.data.{Validated, Xor}
import cats.syntax.apply._ // For |@| syntax
import cats.std.list._
val v1: ValidatedR = valid(1)
val v2: ValidatedR = invalid(List("Accumulates this"))
val v3: ValidatedR = invalid(List("And this"))
(v1 |@| v2 |@| v3) map { _ + _ + _ }

但是,我得到:

Cannot resolve symbol |@|

我的build.sbt

val snapshots = "Sonatype Snapshots"  at "https://oss.sonatype.org/content/repositories/snapshots"

val algebraVersion = "0.2.0-SNAPSHOT"
val catsVersion    = "0.1.0-SNAPSHOT"

val algebra    = "org.spire-math" %% "algebra" % algebraVersion
val algebraStd = "org.spire-math" %% "algebra-std" % algebraVersion

val cats       = "org.spire-math" %% "cats-core" % catsVersion
val catsStd    = "org.spire-math" %% "cats-std" % catsVersion

scalaVersion := "2.11.6"

libraryDependencies ++=
  Seq(
    algebra, algebraStd,
    cats, catsStd
  )

resolvers += snapshots

还有什么我应该导入或使用的吗?

4

1 回答 1

6

这个例子有点过时了。从那时起,一些事情发生了变化:

  • |@|Cartesian与之前的类型类相比,现在由类型类提供Apply
  • OptionScala 标准库中的, , ...等类型的导入List已从 重命名cats.std.xxxcats.instances.xxx
  • 最新版本的 Cats 不再具有Xor数据类型,而是使用scala.util.Either数据类型。

就像我在评论中提到的那样,使用 "uber" import 更容易cats.implicits._

对于一些类似的(和最新的)示例,您可以查看和 的 CatsValidated文档Either

于 2016-11-17T11:21:13.940 回答