我怎样才能使用笛卡尔积|@|最新版本的猫?
How can I use cartesian product |@| with latest versions of 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 |@| 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._
我已经将一些使用 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._