मैं सी में एक पुस्तकालय के लिए एक FFI मॉड्यूल जो पहले कुछ और है एक 1-समय, गैर रैत्रांत समारोह के नाम से जाना चाहता है बना रहा हूं। यह कॉल बेवकूफ है, लेकिन राज्यपूर्ण है, इसलिए मैं इसे हर हास्केल कॉल में बस कॉल कर सकता हूं। लेकिन यह धीमा है और गैर-पुनर्वितरण के कारण यह संघर्ष पैदा कर सकता है।unsafePerformIO और FFI पुस्तकालय प्रारंभ
तो यह सही समय unsafePerformIO उपयोग करने के लिए है? मैं एक असुरक्षित आईओआरआईफ़ या एमवीआर में एक बूल लपेट सकता हूं ताकि इन प्रारंभिक कॉलों को बाद की कॉलों को अनदेखा कर दिया जा सके (कॉल, जहां वैश्विक, छुपा आईओआरएफ राज्य गलत है)।
यदि नहीं, तो यह करने के लिए सही तरीके से क्या है?
एक वैकल्पिक देखा गया है कि उपयोग मुख्य आसपास 'withX' आवरण है। यह कोई स्थिर गारेंटेस नहीं देता है, मैं बस कह रहा हूं कि प्राथमिकता है (पूर्व में 'नेटवर्क पैकेज से सॉकेट्स डीओ')। –
आह हाँ, अच्छा बिंदु। 'टूटे हुए $ \ t ->' से सरल, लेकिन कोई गारंटी नहीं है। –
आह, उत्कृष्ट! यह एक बेहतर समाधान है। मैं इस बारे में चिंतित था कि ग्लोबल स्टेट मल्टीथ्रेडिंग के साथ कैसे बातचीत करेगा (एक असुरक्षित एमवीआर थ्रेड स्थानीय, रनटाइम स्थानीय है?)। यह प्रारंभिक और छुपा के बजाय हास्केल रनटाइम में प्रारंभिक विफलता को स्थानीयकरण भी बनाता है। –