2010-04-15 12 views
7

के लिए हास्केल दस्तावेज़ पढ़ने के लिए मैं हास्कल्स डेटा का उपयोग करने की कोशिश कर रहा हूं। हेप मॉड्यूल, लेकिन मैं इसे पूर्णांक के साथ भी उपयोग करने में असमर्थ हूं। एकमात्र ढेर जिसे मैं उपयोग करने में सक्षम हूं "खाली" है, जो कोई तर्क नहीं लेता है।डेटा का उपयोग करना। हास्केल में हेप, या शुरुआती

बाद में मुझे पता चलेगा कि मेरी ज़रूरतों के लिए उदाहरण कैसे दिया जाए, लेकिन अब मैं खुश हूं अगर मैं इसे संख्याओं के साथ परीक्षण करने में भी सक्षम था।

+0

आपका प्रश्न क्या है के शीर्ष पढ़ने के लिए? क्या आप अब तक अपना कोड प्रदान कर सकते हैं, इसलिए SO उपयोगकर्ता सुधार का सुझाव दे सकते हैं? –

उत्तर

12

आमतौर पर हास्केल में डेटा संरचना पुस्तकालय fromList फ़ंक्शंस को उस सूची में कनवर्ट करने के लिए प्रदान करता है। डेटा। हेप कोई अपवाद नहीं है। लेकिन आप जब इसका इस्तेमाल करने की कोशिश कर कुछ पागल त्रुटियों मिल जाएगा:

Prelude Data.Heap> Data.Heap.fromList [1,2,5,7] 

<interactive>:1:0: 
    Ambiguous type variables `t', `pol' in the constraint: 
     `HeapItem pol t' 
     arising from a use of `fromList' at <interactive>:1:0-27 
    Probable fix: add a type signature that fixes these type variable(s) 

.... 

यह मुख्य यहाँ बिंदु अस्पष्ट प्रकार है। कई प्रकार के ढेर हैं, उदा। मैक्सहेप और मिनहेप, जिसे fromList पर कॉल करने से अनुमानित नहीं किया जा सकता है। आप ढेर आप किस प्रकार की एक प्रकार हस्ताक्षर साथ प्रयोग कर रहे हैं हास्केल बताने की आवश्यकता:

Prelude Data.Heap> Data.Heap.fromList [1,2,5,7] :: MinHeap Int 
fromList [(1,()),(2,()),(5,()),(7,())] 

अन्य निर्माताओं जैसे singleton, fromAscList, आदि समान रूप से संचालित होते हैं।

एक बार जब आप ढेर का निर्माण कर लेंगे, बाकी आसान हैं, उदा। एक ढेर

Prelude Data.Heap> let heap = Data.Heap.fromList [1,2,5,7] :: MinHeap Int 
Prelude Data.Heap> heap 
fromList [(1,()),(2,()),(5,()),(7,())] 
Prelude Data.Heap> Data.Heap.insert 3 heap 
fromList [(1,()),(3,()),(2,()),(5,()),(7,())] 

के लिए एक आइटम डालने के लिए ढेर

Prelude Data.Heap> heap 
fromList [(1,()),(2,()),(5,()),(7,())] 
Prelude Data.Heap> viewHead heap 
Just 1 

आदि

+0

धन्यवाद। यही वह है जिसकी तलाश में मैं हूं। मैं टाइप त्रुटियों को प्राप्त करने में सक्षम था, लेकिन यह पता नहीं लगा कि उन्हें कैसे छुटकारा पाना है। फिर, धन्यवाद – Masse

संबंधित मुद्दे