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