मैं यह समझने लगा हूं forall
कि इस तरह से "तथाकथित प्रकार" में कीवर्ड का उपयोग कैसे किया जाता है:
data ShowBox = forall s. Show s => SB s
यह केवल एक सबसेट है, हालांकि, forall
इसका उपयोग कैसे किया जाता है और मैं बस इस तरह से चीजों में इसके उपयोग के आसपास अपने दिमाग को लपेट नहीं सकता हूं:
runST :: forall a. (forall s. ST s a) -> a
या यह बताते हुए कि ये अलग क्यों हैं:
foo :: (forall a. a -> a) -> (Char, Bool)
bar :: forall a. ((a -> a) -> (Char, Bool))
या पूरा RankNTypes
सामान ...
मैं भाषा के प्रकार के बजाय स्पष्ट, शब्द-मुक्त अंग्रेजी पसंद करना चाहता हूं जो अकादमिक वातावरण में सामान्य हैं। इस पर मैंने जिन स्पष्टीकरणों को पढ़ने का प्रयास किया है उनमें से अधिकांश (जिन्हें मैं खोज इंजनों के माध्यम से खोज सकता हूं) में ये समस्याएं हैं:
- वे अधूरे हैं। वे इस कीवर्ड के उपयोग के एक हिस्से की व्याख्या करते हैं (जैसे "अस्तित्वगत प्रकार") जो मुझे तब तक खुश महसूस करता है जब तक कि मैं उस कोड को नहीं पढ़ता जो इसे पूरी तरह से अलग तरीके से उपयोग करता है (जैसे
runST
,foo
औरbar
ऊपर)। - वे घनीभूत रूप से उन मान्यताओं से भरे हुए हैं जो मैंने असतत गणित, श्रेणी सिद्धांत या अमूर्त बीजगणित की किसी भी शाखा में नवीनतम पढ़ा है जो इस सप्ताह लोकप्रिय है। (अगर मैं "फिर से कार्यान्वयन के विवरण के लिए जो कुछ भी कागज से परामर्श करता हूं" शब्द कभी नहीं पढ़ता हूं , तो यह बहुत जल्द होगा।)
- वे उन तरीकों से लिखे गए हैं जो अक्सर सरल अवधारणाओं को यातनापूर्ण रूप से मुड़ और खंडित व्याकरण और शब्दार्थ में बदल देते हैं।
इसलिए...
वास्तविक प्रश्न पर। क्या कोई भी पूरी तरह forall
से स्पष्ट, सादे अंग्रेजी में कीवर्ड की व्याख्या कर सकता है (या, अगर यह कहीं मौजूद है, तो इस तरह के स्पष्ट विवरण को इंगित करें जो मैंने याद किया है) जो यह नहीं मानता कि मैं एक गणितज्ञ हूं जो शब्दजाल में डूबा हुआ है?
जोड़ने के लिए संपादित:
नीचे उच्च-गुणवत्ता वाले लोगों के दो स्टैंड-आउट उत्तर थे, लेकिन दुर्भाग्य से मैं केवल एक को सर्वश्रेष्ठ के रूप में चुन सकता हूं। नॉर्मन का जवाब विस्तृत और उपयोगी था, चीजों को इस तरह से समझाते हुए जिसमें कुछ सैद्धांतिक आधार थे forall
और साथ ही मुझे इसके कुछ व्यावहारिक निहितार्थ भी दिखाए। yairchu का जवाबएक ऐसे क्षेत्र को शामिल किया गया है जिसका कोई और उल्लेख नहीं किया गया है (स्कोप्ड प्रकार चर) और कोड और एक GHCi सत्र के साथ सभी अवधारणाओं को चित्रित किया है। क्या दोनों का चयन करना संभव था, मैं करूंगा। दुर्भाग्य से मैं नहीं कर सकता और दोनों जवाबों को करीब से देखने के बाद, मैंने फैसला किया है कि येरचू के नॉर्मल आउटफिट कोड और अटैच स्पष्टीकरण के कारण नॉर्मन से थोड़ा बाहर है। यह थोड़ा अनुचित है, हालाँकि, क्योंकि वास्तव में मुझे इस बात को समझने के लिए दोनों उत्तरों की आवश्यकता थी, जो forall
मुझे एक प्रकार के हस्ताक्षर में देखने पर एक भयानक भावना के साथ नहीं छोड़ता है।