2016-11-17 7 views
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 

は何か他のものは、私はインポートまたは使用する必要があることはありますか?

+0

インポートは 'cats.syntax.cartesian._'になりました。' List'インスタンスも 'cats.instances.list._'でインポートできるようになりました。おそらくあなたが使い始めたら最も簡単なのは 'import cats.implicits._'を使うことだけです。 –

+0

'cats.syntax.cartesian._'をインポートすると、'エラー:(2、22)オブジェクトデカルトは、cats.syntax'パッケージのメンバーではありません。 ^ – octavian

+0

この記事で言及されているCatsのバージョンを使用していますか? –

答えて

5

例は少し古いです。いくつかのことは、それ以来変更されました:

  • |@|は、今までにApply型クラスに比べCartesian型クラスによって提供されます。
  • Scala標準ライブラリのOption,Listなどのタイプのインポートは、cats.std.xxxからcats.instances.xxxに変更されました。
  • Catsの最新バージョンでは、Xorデータ型がなくなりましたが、代わりにscala.util.Eitherデータ型が使用されています。

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

類似の(そして最新の)例については、ValidatedEitherのCatsドキュメントをご覧ください。

+1

注意:implicitsを一括でインポートする方が簡単ですが、コンパイルをより高価にする可能性があります。通常、インプリケートの正確な輸入が望ましい。 –

+0

あなたはポイント@GabrielePetronellaを持っていますが、少し先進的であり、初心者にとってフレンドリーなものではないと同意しないでしょうか? Catsのドキュメントでは、どこでも "uber"インポートを使用しようとしています。[#1026](https://github.com/typelevel/cats/issues/1026)を参照してください。 –

+0

はい、同意します。私の要点は:ユーバー輸入は明らかでないかもしれない費用がかかりますので、おそらく言及する価値があります。 –

関連する問題