2012-07-17 38 views
18

अर्थ मैं वर्तमान में http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set.html#t:Sethackage.haskell.org प्रलेखन सम्मेलन

पढ़ रहा हूँ

क्या निम्नलिखित विस्तार (एक निरपेक्ष Haskell शुरुआत करने के लिए) को व्यक्त करता है?

पोर्टेबिलिटी: पोर्टेबल (जो अन्य पोर्टेबिलिटी मान रहे हैं?)
स्थिरता: (? कौन सा अन्य कर रहे हैं स्थिरता मूल्य) अनंतिम
मेंटेनर: [email protected]
सुरक्षित हास्केल: सुरक्षित (वहाँ कुछ असुरक्षित है?)

उत्तर

18

फ़ील्ड पैकेज की .cabal फ़ाइल से आते हैं, जो पैकेज के लिए कुछ मेटाडेटा सूचीबद्ध करता है। कई क्षेत्रों में फ्री-फॉर्म मान हो सकते हैं, ताकि डेवलपर उस क्षेत्र में क्या लिखना चाहें, और प्रत्येक फ़ील्ड में क्या शामिल नहीं होना चाहिए इसके लिए कोई निश्चित "नियम" नहीं है।

पोर्टेबिलिटी: बताता है कि पैकेज हास्केल कंपाइलर्स के बीच पोर्टेबल कितना पोर्टेबल है, और कभी-कभी ऑपरेटिंग सिस्टम के बीच भी। मैंने जो एकमात्र मूल्य देखा है वह "पोर्टेबल" और "अप्राप्य" है। एक अयोग्य पैकेज एक पैकेज है जो शायद हास्केल भाषा एक्सटेंशन पर निर्भर करता है जो केवल GHC कंपाइलर में मौजूद है, और UHC जैसे किसी अन्य हास्केल कंपाइलर पर काम नहीं करता है, या शायद यह कुछ सिस्टम लाइब्रेरी पर निर्भर करता है जो केवल यूनिक्स में मौजूद है और नहीं विंडोज़ में काम नहीं करते हैं।

स्थिरता: निर्दिष्ट करती है कि स्थिर एक पुस्तकालय जो अपनी विश्वसनीयता (उदाहरण के लिए कितनी बार दुर्घटनाओं) भी शामिल है, है, लेकिन सबसे महत्वपूर्ण है कि कितनी बार अपने एपीआई बदल जाता है। मैंने मूल्यों को "प्रयोगात्मक", "अस्थायी" और "स्थिर" देखा है, लेकिन कहीं और सूची हो सकती है (कैबल दस्तावेज में चीजें कभी-कभी खोजना असंभव होती हैं)। जब एक पैकेज प्रयोगात्मक होता है, तो इसका मतलब है कि इसका इंटरफ़ेस शायद प्रत्येक रिलीज के बीच बदलता है, क्योंकि डेवलपर ने यह तय नहीं किया है कि इसे अभी तक कैसे कार्यान्वित किया जाना चाहिए, या क्योंकि डेवलपर ने कहीं पेपर से कुछ सैद्धांतिक कार्यक्षमता लागू की है, और नहीं पैकेज को बनाए रखने का इरादा; यह सिर्फ यह देखने के लिए कार्यक्षमता को कार्यान्वित करना चाहता था कि यह संभव था और पैकेज को एक प्रदर्शन के रूप में प्रकाशित कर रहा है। जब कोई पैकेज अस्थायी होता है, तो इसका मतलब है कि सामान्य API स्थिर है, ताकि पैकेज में अपडेट हो सकें जो केवल आंतरिक बग को ठीक करता है और किसी भी फ़ंक्शन को जोड़ या हटा नहीं देता है। चूंकि यह अस्थायी है, हालांकि, भविष्य में यह बदल सकता है जब डेवलपर्स नई सुविधाओं को जोड़ने या लाइब्रेरी को पुन: स्थापित करने का निर्णय लेते हैं। एक स्थिर पुस्तकालय के साथ, यह मूल रूप से कभी नहीं होता है; एपीआई शायद कभी नहीं बदलेगा, और कार्यान्वयन "रॉक ठोस" या एपीआई या कुछ के संदर्भ कार्यान्वयन है।

पैकेज के लिए रखरखाव पैकेज के लिए जिम्मेदार व्यक्तियों का समूह या समूह है। ईमेल निर्दिष्ट करता है कि इन रखरखाव कैसे पहुंचा जा सकता है।

"सुरक्षित हास्केल" फ़ील्ड एक जीएचसी एक्सटेंशन को संदर्भित करता है जिसे आप here के बारे में अधिक पढ़ सकते हैं। एक मॉड्यूल जो असुरunsafePerformIO जैसे कार्यों का उपयोग करता है जो हास्केल के मौलिक "नियम" को संदर्भित पारदर्शीता जैसे कुछ तोड़ देता है। एक असुरक्षित मॉड्यूल असुरक्षित भाषा एक्सटेंशन का भी उपयोग कर सकता है। सुरक्षित मॉड्यूल एक मॉड्यूल है जो किसी भी असुरक्षित फ़ंक्शंस आदि का उपयोग नहीं करता है, और यह भी किसी भी अन्य असुरक्षित मॉड्यूल आयात नहीं करता है।एक भरोसा मॉड्यूल असुरक्षित कार्य (सीधे भरोसेमंद, परोक्ष रूप से भरोसा) का उपयोग करता है, लेकिन लगता है कि लेखक मॉड्यूल के सार्वजनिक एपीआई सुरक्षित रूप से इस तथ्य को छुपाता है, ताकि बाहर से ऐसा लगता है मॉड्यूल की तरह सुरक्षित है बना दिया है सभी उद्देश्यों और इरादों के लिये। वे "सुरक्षित हास्केल" फ़ील्ड के विकल्प हैं।