हास्केल किस प्रकार [[]] (सूचियों की एक सूची) को हल नहीं कर सकता है?
यह क्यों नहीं है * -> *, क्योंकि मैं इसे इंट जैसे प्रकार दे सकता हूं, और [[Int]] प्राप्त कर सकता हूं, जो दयालु * है।जीएचसीआई किस प्रकार [[]] को हल नहीं कर सकता?
उत्तर
मुझे लगता है कि, Maybe Maybe
साथ की तरह ही है, हालांकि बाद के मामले में कारण शायद स्पष्ट है: "बाहरी" प्रकार निर्माता तरह *
का एक प्रकार पारित हो जाने की उम्मीद है, लेकिन प्रकार * -> *
का एक प्रकार निर्माता (देखता है "आंतरिक" Maybe
/[]
) और शिकायतें। यदि मैं सही हूं, तो यह वास्तव में :kind
जीएचसीआई की कार्यक्षमता के साथ कोई समस्या नहीं है, बल्कि उच्च-प्रकार के प्रकार के रचनाकारों की संरचना को व्यक्त करने के लिए सही वाक्यविन्यास खोजने के साथ।
समाधान के लिए,
:kind forall a. [[a]]
:kind forall a. Maybe (Maybe a)
की तरह कुछ किया जा सकता है (उपयुक्त भाषा विस्तार के साथ चालू - ExistentialQuantification
, मुझे लगता है - forall
वाक्य रचना सक्षम करने के लिए)।
हास्केल कैफे से यह धागा प्रासंगिक हो सकता है: http://www.mail-archive.com/[email protected]/msg08530.html - प्रकार रचनाकारों की संरचना। –
मुझे नहीं लगता कि अस्तित्व का प्रकार इरादा था (जो '*' है)। एक आसान तरीका, लेकिन जीएचसीआई के बाहर, एक टाइप करें [[ए]] '(जो '* -> *' है)। – sdcvvc
@ एसडीसीवीवीसी जो सार्वभौमिक रूप से मात्राबद्ध पॉलीमोर्फिक प्रकार है (अस्तित्व में नहीं है)। –
यदि हम [[]]
[] []
के रूप में desugar तो यह स्पष्ट है कि यह खराब तरह से दयालु है क्योंकि [] :: * -> *
।
यदि आप वास्तव में "सूचियों की सूची" चाहते थे तो आपको * -> *
के दो प्रकार के रचनाकारों को लिखने की आवश्यकता है। आप इसे थोड़ा बॉयलरप्लेट के बिना नहीं कर सकते क्योंकि हास्केल में टाइप-लेवल लैम्ब्डा नहीं है।
newtype Comp f g a = Comp { unComp :: f (g a) }
अब आप लिख सकते हैं:: आप इस हालांकि कर सकते हैं
type ListList = Comp [] []
और यह का उपयोग कर कार्यों लिखें:
f :: ListList Int -> ListList Int
f = Comp . map (map (+1)) . unComp
इस तरह functor रचना कई क्षेत्रों में अनुप्रयोगों, विशेष रूप से Swierstra की है "Data types a la carte"
- 1. मैड्रिडस किस तरह की समस्याएं हल कर सकता है?
- 2. प्रतीक ऑब्जेक्टस्टेट प्रबंधक को हल नहीं कर सकता
- 3. "प्रतीक हल नहीं कर सकता" त्रुटि?
- 4. जीएचसीआई
- 5. जीएचसीआई
- 6. @JavascriptInterface को हल नहीं किया जा सकता
- 7. sed: इस नियमित अभिव्यक्ति को हल नहीं कर सकता
- 8. Android पर MapActivity क्लास को हल नहीं कर सकता
- 9. विक्स प्रतीक "आइकन" को हल नहीं कर सकता
- 10. एक्सकोड zlib प्रतीकों को हल नहीं कर सकता
- 11. R.layout.main को हल नहीं किया जा सकता
- 12. org.json.simple को हल नहीं किया जा सकता
- 13. Base64Encoder को हल नहीं किया जा सकता
- 14. जीएचसीआई पर्यावरण डंप
- 15. WindowsError को हल नहीं कर सकता: [त्रुटि 2] सिस्टम निर्दिष्ट फ़ाइल नहीं ढूंढ सकता
- 16. ओजीआई बंडल शुरू नहीं कर सकता क्योंकि आयात को हल नहीं किया जा सकता
- 17. DisplayMessageActivity को किसी प्रकार के लिए हल नहीं किया जा सकता है- बिल्डिंग पहले एंड्रॉइड ऐप
- 18. मैवेन निर्भरताओं को हल नहीं कर सका, कलाकृतियों को हल नहीं किया जा सका
- 19. गणित का उपयोग कर दो-शरीर की समस्या को हल नहीं कर सकता?
- 20. एकता कंटेनर में शब्दकोश को हल नहीं कर सकते
- 21. JSON सरणी को प्रकार में deserialize नहीं कर सकता - Json.NET
- 22. अंतर्निहित रूप से प्रकार बूल को परिवर्तित नहीं कर सकता?
- 23. आयात org.junit को हल नहीं किया जा सकता
- 24. "एंड्रॉइड एचटीपी ट्रान्सपोर्ट को किसी प्रकार के लिए हल नहीं किया जा सकता है" ksoap2
- 25. क्या मैं जीएचसीआई
- 26. डब्ल्यूसीएफ - [वेबगेट] प्रतीक को हल नहीं कर सकता - मैं गलत क्या कर रहा हूं?
- 27. इस त्रुटि को हल करने के लिए: src-resol: नाम 'j2ee: descriptionType' नाम को एक (n) 'प्रकार परिभाषा' घटक में हल नहीं कर सकता है।
- 28. जीएचसीआई प्रकार चर के लिए नाम कैसे चुनता है?
- 29. सापेक्ष लयआउट "संसाधन को हल नहीं कर सका ..." एंड्रॉइड
- 30. समानार्थी शब्द विस्तृत करें, जीएचसीआई
यह पूछने की तरह है कि क्यों जीएचसी मूल्य 'sqr के प्रकार का पता नहीं लगा सकता टी sqrt' भले ही 'sqrt' स्वयं 'डबल -> डबल' – newacct
है: टी sqrt sqrt जीएचसीआई में ठीक काम करता है हालांकि – Squidly
ऐसा इसलिए है क्योंकि' sqrt' polymorphic है। एक बेहतर सादृश्य है: टी नहीं। – sdcvvc