2016-06-17 13 views
9

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

+1

Avrai bisogno di importare la sintassi per costruttore applicativa. cats.syntax.all._ lo farà, non sicuro dell'importazione specifica – melps

+0

@meps grazie funziona! – Loic

+2

È 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._'). –

risposta

5

Come @meps detto nei commenti, manca l'importazione era cats.syntax.all._

Problemi correlati