साथ Scalaz 7 के EitherT का उपयोग कैसे करें, तो मैं दो प्रकार तर्क लेने एक इकाई ट्रांसफार्मर प्रकार है, मैं liftM
का उपयोग बदल इकाई में मान लिफ्ट करने के लिए कर सकते हैं:liftM
scala> val o = 1.point[List].liftM[OptionT]
o: scalaz.OptionT[List,Int] = OptionT(List(Some(1)))
लेकिन अगर मैं के साथ एक ही बात की कोशिश EitherT
ऐसा लगता है जैसे मैं एक प्रकार अन्य नाम (या एक प्रकार लैम्ब्डा) का उपयोग करना चाहिए:
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]
यह करने के लिए उचित तरीका क्या है? आदर्श रूप से अभिव्यक्ति के अपेक्षित प्रकार (val blah: EitherT[List, String, Int] = 1.point[List].liftM
जैसे कुछ) का उपयोग करके liftM
के लिए तर्क तर्क का उल्लंघन करना।