पर मैप करने के लिए असमर्थ मैं निराकार साथ this problem हल करने के लिए कोशिश कर रहा था। हालांकि मैं किसी कारण HList
पर मैप करने के लिए असमर्थ के लिए कर रहा हूँ। मैं कोड खुद के लिए बोलने दूँगा।HList
import shapeless._
import HList._
case class Foo(a: Option[Int], b: Option[Int])
val a = Foo(Some(3), None)
val b = Foo(Some(22), Some(1))
implicit val fooIso = HListIso(Foo.apply _, Foo.unapply _)
val mapper = new (({ type O2[+A] = (Option[A], Option[A]) })#O2 ~> Option) {
def apply[A](x: (Option[A], Option[A])): Option[A] = x._1.orElse(x._2)
}
fooIso.fromHList(fooIso.toHList(a).zip(fooIso.toHList(b)).map(mapper))
त्रुटि संदेश है:
<console>:55: error: could not find implicit value for parameter mapper: shapeless.Mapper[java.lang.Object with shapeless.~>[[+A](Option[A], Option[A]),Option],shapeless.::[(Option[Int], Option[Int]),shapeless.::[(Option[Int], Option[Int]),shapeless.HNil]]]
fooIso.fromHList(fooIso.toHList(a).zip(fooIso.toHList(b)).map(mapper))
^
क्यों नहीं मानचित्रण काम करता है?
poly1 (और इसलिए ~>) के कार्यान्वयन, परिभाषित किया जा रहा के रूप में परिभाषित किया जा रहा है एक सिंगलटन प्रकार समारोह की तरह इकाई के लिए इसी नाम के लिए सक्षम किया जा रहा पर निर्भर करता है। यह सुचारू रूप से जहां उस संस्था एक वस्तु है और मूल्य एक स्थिर पहचानकर्ता के निर्माण के साथ एक साथ instantiated है के माध्यम से चला जाता है, लेकिन ऐसा नहीं सुचारू रूप से जहां उन दोनों (वैल परिभाषा के माध्यम से एक स्थिर पहचानकर्ता के एक स्पष्ट नए और सृजन के माध्यम से इन्स्टेन्शियशन) अलग होती है इस भावना के कुछ प्रकार बनाता है, लेकिन मैं कल्पना में पाठ को न्यायोचित ठहरा को इंगित नहीं कर सकते हैं ... अगर कोई और कर सकता है, कृपया मुझे बताएं। –