मैं हाल ही में unsafePerformIO
पढ़ रहा हूं, और मैं आपको कुछ पूछना चाहता हूं। मैं इस तथ्य के साथ ठीक हूं कि एक असली भाषा बाहरी पर्यावरण से बातचीत करने में सक्षम होना चाहिए, इसलिए unsafePerformIO
कुछ हद तक उचित है।कैसे पता चलेगा कि स्पष्ट रूप से शुद्ध हास्केल इंटरफ़ेस असुरक्षित संचालन को छुपाता है?
हालांकि, मेरे सबसे अच्छे ज्ञान पर, मुझे यह जानने के लिए किसी भी त्वरित तरीके से अवगत नहीं है कि क्या स्पष्ट रूप से शुद्ध (प्रकारों से निर्णय) इंटरफ़ेस/लाइब्रेरी वास्तव में unsafePerformIO
पर कॉल की खोज में कोड का निरीक्षण किए बिना शुद्ध है (दस्तावेज इसका उल्लेख करने के लिए छोड़ सकता है)। मुझे पता है कि यह केवल तभी उपयोग किया जाना चाहिए जब आप सुनिश्चित हों कि पारदर्शी पारदर्शिता की गारंटी है, लेकिन मैं इसके बारे में जानना चाहता हूं।
"मुझे पता है कि यह केवल तभी उपयोग किया जाना चाहिए जब आप सुनिश्चित हों कि संदर्भित पारदर्शिता की गारंटी है" बिल्कुल। केवल तभी उपयोग किया जाना चाहिए जब आंतरिक संचालन किसी भी उचित तरीके से बाहरी रूप से बाहर नहीं जा सकें, यानी जब कोई ऐसा तरीका न हो कि हुड के नीचे ऐसी कोई चीजें चल रही हों। – leftaroundabout
वैसे, बाहरी वातावरण के साथ बातचीत करने के लिए 'unsafePerformIO' का उपयोग करना ठीक वही है जो आपको * करने की अनुमति नहीं है *। सभी प्रभाव आपके कोड के लिए आंतरिक होने चाहिए - यादों को लागू करने के लिए दृश्यों के पीछे एक परिवर्तनीय चर का उपयोग करना। – ehird
@ehird: आगे स्पष्टीकरण के लिए धन्यवाद, लेकिन जब मैंने "पर्यावरण" लिखा, तो मेरा मतलब यह व्यापक संभव अर्थ में था, जिसमें बाहरी (गैर-हैकेल) पुस्तकालय भी शामिल थे। मैंने उपयोगकर्ता बातचीत के बारे में नहीं सोचा था। –