जाहिर है, कुछ GHC एक्सटेंशन के साथ यह संभव है सूची का एक प्रकार है कि लंबाई प्रकार में एन्कोड किया गया है, इस तरह परिभाषित करने के लिए:हास्केल में लंबाई एनोटेट सूचियों का उपयोग कैसे करें
{-# LANGUAGE GADTs, EmptyDataDecls #-}
data Z
data S a
data List l a where
Nil :: List Z a
Cons :: a -> List l a -> List (S l) a
जबकि मैं देख रहा हूँ क्यों इस कर सकते हैं उपयोगी हो, मुझे वास्तव में इसका उपयोग करने में परेशानी है।
कोई ऐसी सूची कैसे बना सकता है? (इसे प्रोग्राम में हार्डकोडिंग के अलावा।)
कहें कि कोई ऐसा प्रोग्राम बनाना चाहता है जो टर्मिनल से दो ऐसी सूचियों को पढ़ता है और उनके डॉट उत्पाद की गणना करता है। हालांकि वास्तविक गुणात्मक कार्य को कार्यान्वित करना आसान है, प्रोग्राम डेटा को कैसे पढ़ सकता है?
क्या आप मुझे इन तकनीकों का उपयोग करने वाले कुछ मौजूदा कोड पर इंगित कर सकते हैं?
तो, मैं थोड़ा * देर से हूं, लेकिन मैं इस बात पर उलझन में हूं कि आप वास्तव में इसका उपयोग कैसे करेंगे? 'से लिस्ट' एक 'यूलिस्ट' देता है, लेकिन आपके द्वारा दिए गए फ़ंक्शन उदाहरणों को 'सूची' की आवश्यकता होती है। आप 'सूची' से 'सूची' कैसे प्राप्त करेंगे ताकि आप 'नक्शा सूची' कह सकें? –