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.xxxに変更されましたcats.instances.xxx
  • Cats の最新バージョンにはデータ型がなくなり、代わりXorにデータ型が使用されます。scala.util.Either

コメントで述べたように、「uber」インポートを使用する方が簡単cats.implicits._です。

同様の (そして最新の) 例については、Validatedおよびの Cats ドキュメントを参照してくださいEither

于 2016-11-17T11:21:13.940 に答える