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