मुझे एहसास है कि मैं यह कहने के लिए बहुत अलोकप्रिय हूं कि मैं क्या कहने वाला हूं, लेकिन मुझे लगा कि मुझे यहां प्रस्तुत कुछ (मेरी राय में गलत जानकारी) का जवाब देना पड़ा।
हालांकि यह सच है कि एफएफआई परिशिष्ट के हिस्से के रूप में असुरक्षित प्रोफेसर को आधिकारिक तौर पर भाषा में जोड़ा गया था, इसके कारण तार्किक के बजाय काफी हद तक ऐतिहासिक हैं। यह अनौपचारिक रूप से अस्तित्व में था और हास्केल के पास कभी भी एफएफआई होने से पहले व्यापक रूप से उपयोग किया जाता था। यह आधिकारिक तौर पर मुख्य हास्केल मानक का हिस्सा नहीं था क्योंकि, जैसा कि आपने देखा है, यह शर्मिंदगी का बहुत अधिक था। मुझे लगता है कि उम्मीद थी कि यह किसी भी तरह भविष्य में किसी बिंदु पर चलेगा। वैसे यह नहीं हुआ है, और न ही यह मेरी राय में होगा।
एफएफआई परिशिष्ट के विकास ने विदेशी भाषा (आईई सी) कोड को कॉल करने की क्षमता जोड़ने की तुलना में, यहां तक कि आधिकारिक भाषा मानक में प्रवेश करने के लिए असुरक्षित पैराफॉर्मियो के लिए एक सुविधाजनक प्रक्षेपण प्रदान किया है, क्योंकि शायद यहां बहुत बुरा नहीं लगता है, जहां सभी दांव स्थिरता सुनिश्चित करते हैं और वैसे भी सुरक्षा सुनिश्चित करते हैं)। अनिवार्य रूप से राजनीतिक कारणों के लिए इसे यहां रखना भी मजेदार था। इसने मिथक को बढ़ावा दिया कि हास्केल शुद्ध होगा, अगर केवल वह गंदे "बुरी तरह से डिजाइन" सी, या "बुरी तरह से डिजाइन" ऑपरेटिंग सिस्टम, या "बुरी तरह से डिजाइन" हार्डवेयर या .. जो भी .. यह निश्चित रूप से सच है असुरक्षित पैराफॉर्मियो नियमित रूप से एफएफआई से संबंधित कोड के साथ प्रयोग किया जाता है, लेकिन इसके कारण अक्सर एफएफआई के खराब डिजाइन और वास्तव में हास्केल के साथ अधिक करने के लिए होते हैं, जो भी होस्सेल इंटरफ़ेस की कोशिश कर रहे किसी भी विदेशी चीज़ का खराब डिज़ाइन नहीं है।
तो नोर्मन रैमसे कहते हैं, आधिकारिक स्थिति यह साबित हुई कि असुरक्षित पैराफॉर्मियो का उपयोग करना ठीक था, बशर्ते कुछ सबूत दायित्व किसी भी व्यक्ति द्वारा संतुष्ट हो जाएं (मुख्य रूप से ऐसा करने से इनलाइनिंग और सामान्य उप जैसे महत्वपूर्ण संकलक परिवर्तनों को अमान्य नहीं किया जाता है -प्रदर्शन उन्मूलन)। अब तक इतना अच्छा है, या तो कोई सोच सकता है। असली किकर यह है कि इन सबूत दायित्वों संतुष्ट नहीं हो सकते हैं असुरक्षित पैराफॉर्मियो के लिए शायद सबसे आम उपयोग केस क्या है, जो मेरे अनुमान के अनुसार जंगली में सभी असुरक्षित पैराफॉर्मियो के 50% से अधिक के लिए खाते हैं। मैं अपमानजनक मुहावरे के बारे में बात कर रहा हूं जिसे "असुरक्षितफॉर्मियो हैक" कहा जाता है जो वास्तव में (वास्तव में स्पष्ट रूप से) पूरी तरह से असुरक्षित (इनलाइनिंग और सीएसई की उपस्थिति में) है।
मेरे पास वास्तव में समय, स्थान या झुकाव नहीं है जो "असुरक्षितफॉर्मियो हैक" है या वास्तविक आईओ पुस्तकालयों में इसकी आवश्यकता क्यों है, लेकिन नीचे की रेखा यह है कि जो लोग हास्कल्स आईओ आधारभूत संरचना पर काम करते हैं वे आमतौर पर होते हैं "एक चट्टान और एक कठिन जगह के बीच फंस गया"। वे या तो एक अंतर्निहित सुरक्षित एपीआई प्रदान कर सकते हैं जिसमें कोई सुरक्षित कार्यान्वयन नहीं है (हास्केल में), या वे एक अंतर्निहित असुरक्षित एपीआई प्रदान कर सकते हैं जिसे सुरक्षित रूप से कार्यान्वित किया जा सकता है, लेकिन वे शायद ही कभी क्या कर सकते हैं, दोनों एपीआई डिजाइन और कार्यान्वयन में सुरक्षा प्रदान करते हैं।निराशाजनक नियमितता के आधार पर "असुरफफॉर्मियो हैक" असली दुनिया कोड (हास्केल मानक पुस्तकालयों सहित) में दिखाई देता है, ऐसा लगता है कि दो बुराइयों के कम से कम पूर्व विकल्प का चयन करते हैं, और उम्मीद है कि संकलक मक नहीं करेगा इनलाइनिंग, सीएसई या किसी अन्य परिवर्तन के साथ चीजें।
मेरी इच्छा है कि यह सब ऐसा नहीं था। दुर्भाग्य से, यह है।
: लेकिन यह अभी भी एक कार्यात्मक पुस्तकालय है कि एक अनिवार्य कार्यक्रम से कहा जा सकता है बनाने के लिए संभव है। आखिरकार यह तय करने के लिए प्रोग्रामर पर निर्भर करता है कि कितना कार्यात्मक-नस्ल मौजूद है। –
अशुद्ध कोड पेश करना असंभव नहीं है, यह डिफ़ॉल्ट नहीं है। और भाषा इसे हतोत्साहित करने के लिए महत्वपूर्ण लंबाई तक जाती है। हालांकि, अशुद्ध कोड कभी-कभी उपयोगी होता है। विशेष रूप से जब एक शुद्ध इंटरफ़ेस के पीछे सुरक्षित रूप से छुपाया जाता है। –
यह भी देखें http://stackoverflow.com/questions/1916692/are-side-effects-possible-in-pure- कार्यात्मक- प्रोग्रामिंग और http://stackoverflow.com/questions/1916692/are-side-effects- संभावित -इन-शुद्ध-कार्यात्मक-प्रोग्रामिंग और http://stackoverflow.com/questions/2488646/why-are-side-effects-modeled-as-monads-in-haskell –