Кошки не могут разрешить символ |@|

У меня есть следующий код, который я получил здесь: 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

Что-нибудь еще, что я должен импортировать или использовать?

1 ответ

Пример немного устарел. С тех пор изменилось несколько вещей:

  • |@| теперь предоставляется Cartesian тип класса по сравнению с Apply введите класс раньше.
  • Импорт для таких типов, как Option, List,... из стандартной библиотеки Scala были переименованы из cats.std.xxx в cats.instances.xxx,
  • Последняя версия Cats не имеет Xor тип данных больше, но использует scala.util.Either тип данных вместо.

Как я уже упоминал в своем комментарии, проще использовать импорт "uber" cats.implicits._,

Для некоторых подобных (и актуальных) примеров вы можете взглянуть на документацию Cats Validated а также Either,

Другие вопросы по тегам