मैं एक इमारत बना रहा हूँ जेनरिक फ़ंक्शन जो HList
फॉर्म F[T1] :: ... :: F[Tn] :: HNil
के रूप में लेता है, उसे F[T1 :: ... :: Tn :: HNil]
में परिवर्तित करता है और उसके बाद उसे उस ब्लॉक में पास करने की आवश्यकता होती है, जिसमें इसे काम करने के लिए, मुझे उस F[_]
में एचएलिस्ट प्रकार निकालने की आवश्यकता है । मैं कुछ निराकार के तहत 'hlistconstraints
दूर से प्रासंगिक पाया है:नक्शा बेकार hlist प्रकार एफ [टी 1] :: ... :: एफ [टीएन] :: एचएनआईएल प्रकार टी 1 :: ... :: टीएन :: एचएनआईएल (प्रकार स्तर अनुक्रम)
/**
* Type class witnessing that every element of `L` has `TC` as its outer type constructor.
*/
trait UnaryTCConstraint[L <: HList, TC[_]]
... लेकिन यह केवल यह सत्यापित करने के hlist में वास्तव में सिर्फ F[_]
से बना है पारित कर दिया इस्तेमाल किया जा सकता; ऐसा लगता है कि _
बिट निकालने के लिए कोई रास्ता नहीं है, ताकि स्वयं की एक सूची में कह सकें।
मुझे नौकरी करने के लिए कुछ कहां ढूंढना चाहिए? या मुझे बस बॉक्स से कुछ भी खोजने की उम्मीद नहीं करनी चाहिए और इसके बजाय टाइप गणना स्वयं बनाना चाहिए?
प्रकटीकरण: यह प्रश्न Generic transform/fold/map over tuple/hlist containing some F[_] पर सहायक है लेकिन फिर भी कम से कम एक स्टैंडअलोन प्रश्न के रूप में उपयोगी है, मेरी राय में।
क्या आप एक साधारण मामले के लिए इनपुट और अपेक्षित आउटपुट का उदाहरण दे सकते हैं? – Nate
क्या यह भी संभव है? सूची नहीं [Int] :: सूची [स्ट्रिंग] :: HList' केवल 'सूची [Int :: स्ट्रिंग :: HList] बनने में सक्षम हो जाएगा' iff प्रत्येक सूची सटीक लंबाई की थी या आप देख रहे हैं एक क्रॉस उत्पाद बनाने के लिए? – Nate
@Nate: अच्छा बिंदु; आइए बस यह कहें कि इसे प्रमाणीकरण और विकल्प जैसी चीजों के साथ काम करने की ज़रूरत है, जिसमें केवल एक ही तत्व में निहित है। –