2016-06-17 60 views
9

我已经迁移使用猫0.2〜0.6的猫一些代码,和我的代码是不是wroking了:如何使用笛卡尔产品| @ |与最新版本的猫?

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} 

感谢

+1

你需要导入的语法的应用性建设者。 cats.syntax.all._将做到这一点,不确定具体的进口 – melps

+0

@meps谢谢它的工作原理! – Loic

+2

使用'import cats.implicits._'更容易,那么你不需要搜索正确的'cats.std.x'或'cats.syntax.y'(你需要的具体内容就是'cats'。 syntax.cartesian._')。 –

回答

5

由于@meps在评论中说,失踪的进口是cats.syntax.all._