जो मैं समझता हूं उससे, हास्केल में सूची प्रकार को एक लिंक्ड सूची का उपयोग करके आंतरिक रूप से कार्यान्वित किया जाता है। हालांकि, भाषा के उपयोगकर्ता को कार्यान्वयन के विवरण नहीं मिलते हैं, न ही उनके पास "लिंक" को संशोधित करने की क्षमता है जो लिंक की गई सूची को एक अलग स्मृति पते पर इंगित करने की अनुमति देता है। मुझे लगता है, आंतरिक रूप से किया जाता है।हास्केल में सूचीबद्ध: डेटा प्रकार या सार डेटा प्रकार?
फिर सूची प्रकार को हास्केल में कैसे योग्य किया जा सकता है? क्या यह एक "डेटा प्रकार" या "अमूर्त डेटा प्रकार" है? और कार्यान्वित की लिंक्ड सूची प्रकार का क्या?
इसके अतिरिक्त, चूंकि प्रीलूड द्वारा प्रदान की गई सूची प्रकार एक लिंक्ड सूची प्रकार नहीं है, मूलभूत लिंक सूची कैसे लागू की जा सकती है?
उदाहरण के लिए, एक सूची के सूचकांक n पर एक तत्व एक जोड़ने के लिए डिज़ाइन कोड के इस टुकड़े:
add [] acc _ _ = reverse acc
add (x:xs) acc 0 a = add xs (x:a:acc) (-1) a
add (x:xs) acc n a = add xs (x:acc) (n-1) a
एक 'असली' लिंक्ड सूची का उपयोग करना, कोई तत्व जोड़ बस को संशोधित शामिल होंगे एक स्मृति पते के लिए एक सूचक। हास्केल में यह संभव नहीं है (या यह है?), इस प्रकार सवाल: क्या एक सूची में तत्व को सबसे अच्छा संभव जोड़ने का मेरा कार्यान्वयन है, या क्या मुझे कुछ याद आ रहा है (reverse
फ़ंक्शन का उपयोग, मुझे लगता है, विशेष रूप से, विशेष रूप से, बदसूरत, लेकिन क्या यह बिना करना संभव है?)
कृपया, अगर मैंने जो भी कहा है, उसे सही करने में संकोच न करें, और आपके समय के लिए धन्यवाद।
स्टैक ओवरव्लो में आपका स्वागत है! महान पहला सवाल। – Sampson
http://en.wikibooks.org/wiki/Haskell/List_processing –
उन सभी लोगों के लिए धन्यवाद जिन्होंने मेरे प्रश्न का उत्तर दिया है, और हालांकि मैं केवल उनमें से एक को "स्वीकृत उत्तर" के रूप में चिह्नित कर सकता हूं, आप सभी बहुत उपयोगी थे। – CharlieP