मैंने हास्केल विकी में जीएडीटी के बारे में पढ़ना शुरू किया लेकिन इसे समझने में काफी सहज महसूस नहीं हुआ। क्या आप एक विशिष्ट पुस्तक अध्याय या एक हास्केल शुरुआती के लिए जीएडीटी समझाते हुए ब्लॉग पोस्ट की अनुशंसा करते हैं?सीखने के लिए सामग्री GADT
उत्तर
अपफेलमस ने video tutorial for GADTs बनाया है जो उपयोगी हो सकता है।
मुझे GHC manual में उदाहरण पसंद है। यह आसान है, और यह कुछ महत्वपूर्ण बिंदुओं को दिखाता है:
GADTs आप हास्केल के प्रकार प्रणाली का उपयोग एक भाषा आप लागू कर रहे हैं ("वस्तु भाषा") के प्रकार प्रणाली
यह अनुमति देता है मॉडल करने के लिए करते हैं हास्केल की स्थिर जांच यह कहने के लिए कि आपका "कंपाइलर पास" या क्या प्रकार संरक्षित नहीं है। ऑब्जेक्ट-भाषा शर्तों को लेने वाले कार्यों का मानना है कि वे शर्तें अच्छी तरह से टाइप की गई हैं। अच्छी तरह से टाइप की गई शर्तों का उत्पादन करने के लिए ऑब्जेक्ट-भाषा शर्तों को लौटने वाले कार्यों की आवश्यकता होती है।
एक जीएडीटी कन्स्ट्रक्टर से मेल खाने वाला पैटर्न टाइप परिशोधन का कारण बनता है।
eval
मेंTerm a -> a
कुल मिलाकरeval (Lit i)
के दाएं हाथ की ओरInt
है, क्योंकि बाएं हाथ के निर्माता के पासTerm Int
टाइप किया गया था।हास्केल सिस्टम परवाह नहीं है कि आप अपने जीएडीटी कन्स्ट्रक्टर को किस प्रकार देते हैं। हम बस के रूप में आसानी से
data Term a
में हर निर्माता प्रकारTerm a
, याTerm Bool
का एक परिणाम दे कर सकता है, औरdata
परिभाषा अभी भी के माध्यम से जाना होगा। लेकिन हमeval :: Term a -> a
लिखने में सक्षम नहीं होंगे। आप मॉडल समस्या मॉडल के लिए GADT "टैग प्रकार" चुनते हैं, ताकि आप जिन उपयोगी कार्यों को लिखना चाहते हैं वे अच्छी तरह से टाइप किए गए हैं।
हास्केल विकी के GADTs for dummies सबसे अच्छा विवरण मैंने देखा है है।
समस्या (और मुझे संदेह है कि) में सबसे अधिक परिचय के साथ समस्या है कि वे वाक्यविन्यास के संदर्भ में जीएडीटी के उदाहरण दिखाते हैं जो गैर स्पष्ट है जब तक कि आप GADT समझते हैं। यह सबसे सरल उदाहरण है जिस पर सब कुछ विशेष रूप से पूरी तरह से समझ-आप क्या पैटर्न के कई कर रहे हैं पर अनुमान लगा सकते हैं करने के लिए कठिन बनाया गया है बनाता है, लेकिन हर बयान की सटीक भूमिका को समझने चुनौतीपूर्ण है।
"नौसिखियों के लिए" पोस्ट dissects और, अपने स्वयं के बुनियादी उदाहरण समझा यह एक कहीं अधिक उपयोगी प्रारंभिक बिंदु बनाता है जो करने के लिए रास्ते में वाक्य रचना के अर्थ बनाता है। मैं इसकी पुरजोर सलाह देता हूँ।
- 1. GADT बहुरूपी सूची
- 2. ईबीएनएफ सीखने के लिए मुझे सामग्री कहां मिल सकती है?
- 3. सर्वश्रेष्ठ डोजो सीखने की सामग्री क्या है?
- 4. संसाधन QML सीखने के लिए?
- 5. पर्ल सीखने के लिए सिफारिशें?
- 6. सीखने के लिए संसाधन Emacs
- 7. LINQ सीखने के लिए संसाधन?
- 8. सीखने के लिए संसाधन Verilog
- 9. GNUMake सीखने के लिए संसाधन?
- 10. मेटाप्रोग्रामिंग सीखने के लिए भाषा
- 11. यूनिक्स एपीआई सीखने के लिए अच्छी किताब?
- 12. एकाधिक सामग्री प्रबंधन प्रणालियों को सीखने की लागत/लाभ
- 13. सी प्रोग्राम डिजाइन सीखने के लिए संसाधन
- 14. सीखने के लिए संसाधन सी # एक्सेल इंटरऑप
- 15. PyGame सीखने के लिए सर्वोत्तम संसाधन?
- 16. डेल्फी = पास्कल? सीखने के लिए संसाधन?
- 17. बिल्डआउट सीखने के लिए बेहतर संसाधन
- 18. सीखने के लिए लिखित प्रबंधन कोड
- 19. जावा जेनेरिक सीखने के लिए संसाधन?
- 20. श्रेणी सिद्धांत सीखने के लिए संसाधन
- 21. लैम्ब्डा कैलकुस सीखने के लिए पूर्व-आवश्यकताएं
- 22. सीखने के लिए अच्छा opensource जेएस परियोजना?
- 23. XQuery सीखने के लिए सरल उपकरण?
- 24. जावा थ्रेड सीखने के लिए छोटी परियोजना
- 25. डाटा वेयरहाउसिंग सीखने के लिए अच्छी जगह?
- 26. कौन सी असेंबली भाषा सीखने के लिए
- 27. पुश अधिसूचना सीखने के लिए आईफोन
- 28. पीएल/पीजीएसक्यूएल सीखने के लिए अच्छे संसाधन?
- 29. सीखने के लिए अच्छे संसाधन फैक्टर
- 30. .NET जेनेरिक सीखने के लिए सर्वश्रेष्ठ संसाधन?
क्या आपने इसे पढ़ा था? http://www.haskell.org/haskellwiki/GADTs_for_dummies –
हम्म संख्या। यह वादा करता है। धन्यवाद। –