2012-10-12 16 views
10

ile Scalaz 7'nin EitherT nasıl kullanılır, ben dönüştürülmüş monad içine değerlerini kaldırmak için liftM kullanabilirsinizİki tip savunmalarını alan bir monad trafo tipi varsa 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] 

bunu yapmanın uygun yolu nedir: bir tür takma (veya bir tür lambda) kullanması gerekir gibi EitherT görünüyor? İdeal ifade (val blah: EitherT[List, String, Int] = 1.point[List].liftM gibi bir şey) kullanarak ifade türünü kullanarak liftM tür argümanını ideal olarak çıkar.

cevap

8

Orada genel olarak çok argüman türü Kurucular işlemek için daha iyi bir yol olarak görünmüyor, ancak EitherT spesifik durumda kullanabileceğimiz EitherT.right:

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