Я мигрировали код с помощью кошек 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}
Благодаря
Вам нужно импортировать синтаксис для аппликативного строителя. cats.syntax.all._ сделает это, не уверенный в специфическом импорте – melps
@meps благодарит его! – Loic
Легче использовать 'import cats.implicits._', тогда вам не нужно искать правильные' cats.std.x' или 'cats.syntax.y' (конкретный, который вам нужен был, это' cats. syntax.cartesian._'). –