Scala 如何在最新版本的Cats中使用笛卡尔积?

Scala 如何在最新版本的Cats中使用笛卡尔积?,scala,scala-cats,Scala,Scala Cats,我已经将一些使用cats 0.2的代码迁移到cats 0.6,我的代码不再编写: import cats.data.Validated import cats.std.all._ val valid1: Validated[List[String], Int] = valid(1) val valid2: Validated[List[String], Int] = valid(2) (valid1 |@| valid2).map{_+_} 编译器说: Error:(48, 6) value

我已经将一些使用cats 0.2的代码迁移到cats 0.6,我的代码不再编写:

import cats.data.Validated
import cats.std.all._

val valid1: Validated[List[String], Int] = valid(1)
val valid2: Validated[List[String], Int] = valid(2)
(valid1 |@| valid2).map{_+_}
编译器说:

Error:(48, 6) value |@| is not a member of 

cats.data.Validated[List[String],Int]
(valid1 |@| valid2).map{_+_}
    ^
我在文档中没有找到任何与此相关的内容,我是否应该进行导入或声明隐式或其他内容

我设法使用了
product
而不是
|@|
,但它不像生成嵌套元组那样方便。比如说,我有4个组合:

  (valid1 product valid2 product valid3 product valid4)
    .map{case (((v1, v2), v3), v4) => v1 + v2 + v3 + v4}

谢谢,

正如@meps在评论中所说,缺少的导入是
cats.syntax.all.\u

您需要为ApplicationBuilder导入语法。cats.syntax.all.u将执行此操作,但不确定具体的import@meps谢谢,这很有效!使用
导入cats.implicits.\u
更容易,这样您就不需要搜索正确的
cats.std.x
cats.syntax.y
(这里需要的具体内容是
cats.syntax.cartesian.\u
)。
@
不再存在。如果它对任何人都有帮助,
(ma |@mb).map
将替换为
(ma,mb).mapN