2012-10-12 2 views
10

와 Scalaz 7의 EitherT를 사용하는 방법, 나는 변환 된 모나드에 값을 들어 올려 liftM을 사용할 수 있습니다나는 두 가지 유형의 인수를 복용 모나드 변압기 유형이있는 경우 liftM

scala> val e = 1.point[List].liftM[({type l[a[+_],b] = EitherT[a, String, b]})#l] 
e: scalaz.EitherT[List,java.lang.String,Int] = [email protected] 

이 작업을 수행하는 적절한 방법은 무엇입니까 : 나는 타입 별칭 (또는 타입 람다)를 사용해야합니다 같은 EitherT 것 같습니다? 예상되는 형식의 식 (val blah: EitherT[List, String, Int] = 1.point[List].liftM)을 사용하여 liftM의 형식 인수를 추정하는 것이 이상적입니다.

답변

8

가 일반적으로 다중 인수 타입 생성자를 처리하는 더 좋은 방법이 표시되지 않습니다,하지만 EitherT의 특정한 경우에, 우리는 사용할 수 EitherT.right :

scala> val o: EitherT[List, String, Int] = EitherT.right(1.point[List]) 
o: scalaz.EitherT[List,String,Int] = [email protected]