2016-06-17 98 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._