2016-06-17 4 views
9

나는 고양이 0.6 고양이 0.2을 사용하여 몇 가지 코드를 마이그레이션 한, 내 코드는 더 이상 wroking되지 않습니다어떻게 데카르트 제품을 사용할 수 있습니까? @ | 최신 버전의 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{_+_} 

컴파일러는 말한다 : 나는이에 대한 문서에서 아무것도 찾을 수 없습니다

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

'cats.implicits._'를 사용하는 것이 더 쉽습니다. 그러면 올바른'cats.std.x' 또는'cats.syntax.y'를 검색 할 필요가 없습니다 (여기서 필요한 것은'cats '입니다. syntax.cartesian._'). –

답변

5

을 @meps 댓글에서 말했듯이, 실종 가져 오기 당신은 실용적 빌더 구문을 가져해야합니다 cats.syntax.all._