Ho migrato del codice con i gatti da 0,2 a 0,6 gatti, e il mio codice non è più wroking:Come posso utilizzare il prodotto cartesiano | @ | con le ultime versioni di Cats?
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{_+_}
compilatore dice:
Error:(48, 6) value |@| is not a member of
cats.data.Validated[List[String],Int]
(valid1 |@| valid2).map{_+_}
^
non ho trovato nulla nella documentazione riguardo a questa , dovrei aver importato o dichiarato un implicito o qualcosa del genere?
Sono riuscito a utilizzare product
anziché |@|
ma non è conveniente in quanto produce tuple annidate. Diciamo che ho 4 convalidato per combinare:
(valid1 product valid2 product valid3 product valid4)
.map{case (((v1, v2), v3), v4) => v1 + v2 + v3 + v4}
Grazie
Avrai bisogno di importare la sintassi per costruttore applicativa. cats.syntax.all._ lo farà, non sicuro dell'importazione specifica – melps
@meps grazie funziona! – Loic
È più facile usare "import cats.implicits._", quindi non è necessario cercare il corretto 'cats.std.x' o' cats.syntax.y' (lo specifico di cui avevi bisogno qui era 'cats. syntax.cartesian._'). –