Nếu tôi có một loại đơn nguyên biến áp dùng hai tham số kiểu, tôi có thể sử dụng liftM
để nâng giá trị vào các đơn nguyên chuyển:Làm thế nào để sử dụng EitherT Scalaz 7 với liftM
scala> val o = 1.point[List].liftM[OptionT]
o: scalaz.OptionT[List,Int] = OptionT(List(Some(1)))
Tuy nhiên nếu tôi cố gắng điều tương tự với EitherT
có vẻ như tôi phải sử dụng bí danh loại (hoặc loại lambda):
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]
Cách thích hợp để làm điều này là gì? Lý tưởng nhất là suy luận loại đối số cho liftM
bằng cách sử dụng loại biểu thức mong muốn (chẳng hạn như val blah: EitherT[List, String, Int] = 1.point[List].liftM
).