यह प्रश्न व्यक्तिपरक नहीं है। संदर्भित पुस्तक में एक बहुत विशिष्ट क्रिया का उपयोग किया जाता है, और मैं यह समझना चाहूंगा कि उस वाक्यांश का निहितार्थ क्या है, क्योंकि मुझे डर है कि मैं कुछ गलत समझ रहा हूं।
से आप एक हास्केल जानें , निम्नलिखित पैरा तीसरा और अंतिम एक युक्त "हम यह मान है *"।
data Barry t k p = Barry { yabba :: p, dabba :: t k }और अब हम इसे एक उदाहरण बनाना चाहते हैं
Functor।Functorप्रकार के प्रकार चाहता है,* -> *लेकिनBarryऐसा नहीं लगता है कि यह उस तरह का है। किस तरह का हैBarry? ठीक है, हम देखते हैं कि यह तीन प्रकार के पैरामीटर लेता है, इसलिए यह होने जा रहा हैsomething -> something -> something -> *। यह कहना सुरक्षित है किpयह एक ठोस प्रकार है और इस तरह का एक प्रकार है*। इसके लिएk, हम मानते हैं*और इसलिए विस्तार से,tएक तरह का है* -> *। अब हम उन प्रकारों को प्रतिस्थापित करते हैंsomethingजिन्हें हमने प्लेसहोल्डर के रूप में उपयोग किया है और हम देखते हैं कि यह एक प्रकार का है(* -> *) -> * -> * -> *।
हम कुछ भी क्यों मान रहे हैं? "हम मान लेते हैं कि X (यानी हम मान लेते हैं कि X सत्य है)" मेरे लिए यह सोचना स्वाभाविक है कि हमें इस मामले पर भी विचार करना चाहिए कि X गलत है। उदाहरण के विशिष्ट मामले में, नहीं कर सकता है tएक तरह से हो सकता है (* -> *) -> *और kएक तरह से (* -> *)? यदि ऐसा होता, तो जो कुछ भी tऔर kवास्तव में था, t kवह अभी भी एक ठोस प्रकार होगा, नहीं?
मैं देखता हूं कि तर्क की पूरी लाइन को कंपाइलर के खिलाफ जांचा जाता है, लेकिन मुझे नहीं लगता कि कंपाइलर मानता है । यदि ऐसा होता है, तो मैं जानना चाहूंगा कि क्या है, अगर यह नहीं है तो फिर से मुझे डर है कि मैं अनुच्छेद का अर्थ याद कर रहा हूं।
k :: Lकिसी भी प्रकार के लिए हो सकते हैंL, जब तकt :: L -> *। हालांकि एक कंपाइलर को कुछ विशिष्ट का चयन करना चाहिएL, या एक पॉलीकॉल का सहारा लेना चाहिए। एक बहु-जीवन विकल्प सबसे सामान्य विकल्प होगा, लेकिन यहां जीएचसी चुनता हैL = *(मूल हास्केल में पॉलीकाइंड नहीं होते हैं, उन्हें विस्तार के रूप में चालू करना पड़ता है)। चूंकि यह कुछ चुनता है जो मनमाना है, LYAH शब्द "ग्रहण" (AFAICT) का उपयोग करता है।