2012-10-04 13 views
12

Data.Constraint.Forall के पीछे विचार, जैसा कि मैं समझता हूं, कार्यान्वयन में मजबूती का उपयोग करना है, लेकिन प्रकार प्रणाली का उपयोग कर सुरक्षा सुनिश्चित करना है। मेरे पास बाद के संबंध में दो प्रश्न हैं।बाधा पैकेज कैसे काम करता है?

  1. हमें दो स्कोलम चर - ए और बी की आवश्यकता क्यों है? मैं कल्पना करूंगा कि अगर एक बाधा एक «अज्ञात» प्रकार से संतुष्ट है, तो यह polymorphic है। दूसरा प्रकार कैसे अधिक सुरक्षा देता है?
  2. इन प्रकारों को स्कोलम चर कहा जाता है? मैंने सोचा कि स्केलिनेनाइजेशन का उपयोग अस्तित्वत्मक मात्रा को हटाने के लिए किया जाता है, और यहां हम सार्वभौमिक मात्रा देखते हैं। क्या वहां कोई संकेत-फ़्लिपिंग है जिसे मैंने याद किया?

उत्तर

11

एक एमपीटीटी और कार्यात्मक निर्भरता के साथ संभव है जब यह एक एकल चर है, तो एक बाधा पर पैरामीटर के बाध्यता का उपयोग करके स्केलम की पहचान करना संभव है। जिस चाल को मैं करता था वह दो काम करते समय काम नहीं करता है।

इस मॉड्यूल के बाहर लिखे गए कोड के परिप्रेक्ष्य से, चर स्कोलमेज्ड हैं। वे प्रभावी रूप से एक 'ताजा' प्रकार के कन्स्ट्रक्टर हैं।

लेकिन यह देखते हुए कि आप मॉड्यूल के बाहर इन प्रकारों को स्पष्ट रूप से संदर्भित नहीं कर सकते हैं क्योंकि इन्हें निर्यात नहीं किया जाता है, इन स्कॉल्स को कवर करने वाले किसी भी उदाहरण को सार्वभौमिक रूप से प्रमाणित किया जाना चाहिए।

इस प्रकार मैं एक अस्तित्व से सार्वभौमिक में अपग्रेड करता हूं। 'साइन फ्लिप' उनकी अप्रत्याशित प्रकृति से आता है, तकनीकी रूप से स्कॉल्स के रूप में उनकी भूमिका से नहीं।

+0

धन्यवाद। क्या आप उस चाल को दिखा सकते हैं जिसके बारे में आप बात कर रहे हैं? साथ ही, क्या आपके पास सबूत है (या एक दृढ़ तर्क) कि दो चर पर्याप्त हैं? –

+0

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

+0

कफ से बाहर, सबसे सरल उदाहरण एक वर्ग और एक धन का उपयोग करने के लिए नीचे आया। याद रखें कि आप 'कक्षा फू एक बी | ए -> बी, बी -> ए', फिर यदि आप 'फू ए' के ​​दूसरे तर्क पर 'मात्राबद्ध' करते हैं तो दूसरे तर्क में पैरामीट्रिक नहीं है, भले ही आप उस दूसरे तर्क को स्कोलम 'ए' के साथ तुरंत चालू कर सकें। लेकिन जब आप दो प्रकार का उपयोग करने के लिए जाते हैं, तो फंड ट्रिक अब काम नहीं करता है, क्योंकि अब दोनों '(फू ए ए, फू ए बी) की आवश्यकता फंड को हरा देती है। –

संबंधित मुद्दे