Data.Constraint.Forall के पीछे विचार, जैसा कि मैं समझता हूं, कार्यान्वयन में मजबूती का उपयोग करना है, लेकिन प्रकार प्रणाली का उपयोग कर सुरक्षा सुनिश्चित करना है। मेरे पास बाद के संबंध में दो प्रश्न हैं।बाधा पैकेज कैसे काम करता है?
- हमें दो स्कोलम चर - ए और बी की आवश्यकता क्यों है? मैं कल्पना करूंगा कि अगर एक बाधा एक «अज्ञात» प्रकार से संतुष्ट है, तो यह polymorphic है। दूसरा प्रकार कैसे अधिक सुरक्षा देता है?
- इन प्रकारों को स्कोलम चर कहा जाता है? मैंने सोचा कि स्केलिनेनाइजेशन का उपयोग अस्तित्वत्मक मात्रा को हटाने के लिए किया जाता है, और यहां हम सार्वभौमिक मात्रा देखते हैं। क्या वहां कोई संकेत-फ़्लिपिंग है जिसे मैंने याद किया?
धन्यवाद। क्या आप उस चाल को दिखा सकते हैं जिसके बारे में आप बात कर रहे हैं? साथ ही, क्या आपके पास सबूत है (या एक दृढ़ तर्क) कि दो चर पर्याप्त हैं? –
मैं देखता हूं कि मैं इसे खोद सकता हूं या नहीं। जब मैंने प्रश्न में कोड लिखा था तो यह एक त्वरित उदाहरण था जब मैंने वापस टक्कर लगी। "दृढ़ तर्क" यह है कि मैं जिस हैक के साथ आया था वह काम नहीं करता था, और यह कि कोई भी स्केच जिसके साथ मैं आ सकता था, उसके माध्यम से देख सकता था कि यह परीक्षण करने के लिए बहुत अधिक काम करेगा। पर्याप्त ऑलेगरी के साथ दो चरणीय समाधान के आसपास काम करना संभव हो सकता है, लेकिन आपको इसे करने के लिए लगभग निश्चित रूप से कुछ भारी मशीनरी की आवश्यकता होगी। ;) –
कफ से बाहर, सबसे सरल उदाहरण एक वर्ग और एक धन का उपयोग करने के लिए नीचे आया। याद रखें कि आप 'कक्षा फू एक बी | ए -> बी, बी -> ए', फिर यदि आप 'फू ए' के दूसरे तर्क पर 'मात्राबद्ध' करते हैं तो दूसरे तर्क में पैरामीट्रिक नहीं है, भले ही आप उस दूसरे तर्क को स्कोलम 'ए' के साथ तुरंत चालू कर सकें। लेकिन जब आप दो प्रकार का उपयोग करने के लिए जाते हैं, तो फंड ट्रिक अब काम नहीं करता है, क्योंकि अब दोनों '(फू ए ए, फू ए बी) की आवश्यकता फंड को हरा देती है। –