मैं हास्केल में एक डेटा संरचना की तलाश में हूं जो तेजी से अनुक्रमण और तेजी से संलग्न दोनों का समर्थन करता है। यह एक यादगार समस्या के लिए है जो रिकर्सन से उत्पन्न होता है।हास्केल: ओ (1) के साथ डेटास्ट्रक्शन और ओ (1) अनुक्रमण?
वेक्टर सी ++ में काम करते हैं (जो कि म्यूटेबल हैं, लेकिन इससे इस मामले में कोई फर्क नहीं पड़ता) ऐसा लगता है कि दोनों (अमूर्त) ओ (1) संलग्न करने के साथ अपरिवर्तनीय वैक्टर और ओ (1) इंडेक्सिंग संभव होना चाहिए (ठीक है, यह नहीं है, इस सवाल पर टिप्पणियां देखें)। क्या यह हास्केल में संभव है या मुझे डेटा के साथ जाना चाहिए। सिक्योरेंस जिसमें (AFAICT वैसे भी) ओ (1) संलग्न है और ओ (लॉग (मिनट (i, n-i))) अनुक्रमण?
एक संबंधित नोट पर, हास्केल नौसिखिया के रूप में मुझे खुद को हास्केल डेटा संरचनाओं के लिए एक व्यावहारिक, संक्षिप्त मार्गदर्शिका के लिए उत्सुकता मिलती है। आदर्श रूप से यह सबसे व्यावहारिक डेटा संरचनाओं पर प्रदर्शन विशेषताओं और पॉइंटर्स के साथ हास्केल पुस्तकालयों पर एक व्यापक व्यापक अवलोकन प्रदान करेगा जहां उन्हें कार्यान्वित किया जाता है। ऐसा लगता है कि वहां बहुत सारी जानकारी है, लेकिन मुझे यह थोड़ा बिखरा हुआ है। क्या मेरी मांग बहुत ज़्यादा है?
मुझे पूरा यकीन है कि ऐसी कोई डेटा संरचना मौजूद नहीं है। यदि आपके सभी परिशिष्ट रैखिक रूप से होते हैं, तो 'डेटा.वेक्टर' का उपयोग करें क्योंकि फ़्यूज़न आपको इच्छित प्रदर्शन प्रदान करेगा, अन्यथा 'डेटा.Sequence' –
धन्यवाद का उपयोग करें। मुझे लगता है कि यह संभव होना चाहिए, लेकिन हो सकता है कि विशेष हो ... क्या आप समझा सकते हैं कि 'आपके सभी परिशिष्ट रैखिक रूप से' क्या मतलब है? क्या आपका मतलब रैखिक रूप से बढ़ते सूचकांक के साथ है? ऐसा लगता है कि वेक्टर के साथ प्रत्येक ऑपरेशन अभी भी ओ (एन) ... – Paul
मूल रूप से, यदि आप वेक्टर को अपने कोड के माध्यम से "थ्रेडेड" के रूप में सोच सकते हैं, जो कि मध्यवर्ती मूल्यों को सहेजता नहीं है, तो " एक ही ऑपरेशन में "फ्यूज्ड"। –