2010-10-26 16 views
14

मैंने हास्केल विकी में जीएडीटी के बारे में पढ़ना शुरू किया लेकिन इसे समझने में काफी सहज महसूस नहीं हुआ। क्या आप एक विशिष्ट पुस्तक अध्याय या एक हास्केल शुरुआती के लिए जीएडीटी समझाते हुए ब्लॉग पोस्ट की अनुशंसा करते हैं?सीखने के लिए सामग्री GADT

+3

क्या आपने इसे पढ़ा था? http://www.haskell.org/haskellwiki/GADTs_for_dummies –

+0

हम्म संख्या। यह वादा करता है। धन्यवाद। –

उत्तर

16

अपफेलमस ने video tutorial for GADTs बनाया है जो उपयोगी हो सकता है।

+5

मैं भी इसकी सिफारिश करने वाला था। ;-) –

+2

मैं सुझाव देते हैं कि किसी के लिए वीडियो GADTs के साथ बाहर शुरू। – Yitz

+0

क्या किसी के पास एक प्रतिलेख है? मुझे लगता है कि मैं उस व्यक्ति का ही तरह हैं, जो और अधिक आरामदायक है और तेजी से पढ़ने के बजाय सुन/देख रहा है नहीं कर रहा हूँ। – sastanin

6

मुझे 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 "टैग प्रकार" चुनते हैं, ताकि आप जिन उपयोगी कार्यों को लिखना चाहते हैं वे अच्छी तरह से टाइप किए गए हैं।

1

हास्केल विकी के GADTs for dummies सबसे अच्छा विवरण मैंने देखा है है।

समस्या (और मुझे संदेह है कि) में सबसे अधिक परिचय के साथ समस्या है कि वे वाक्यविन्यास के संदर्भ में जीएडीटी के उदाहरण दिखाते हैं जो गैर स्पष्ट है जब तक कि आप GADT समझते हैं। यह सबसे सरल उदाहरण है जिस पर सब कुछ विशेष रूप से पूरी तरह से समझ-आप क्या पैटर्न के कई कर रहे हैं पर अनुमान लगा सकते हैं करने के लिए कठिन बनाया गया है बनाता है, लेकिन हर बयान की सटीक भूमिका को समझने चुनौतीपूर्ण है।

"नौसिखियों के लिए" पोस्ट dissects और, अपने स्वयं के बुनियादी उदाहरण समझा यह एक कहीं अधिक उपयोगी प्रारंभिक बिंदु बनाता है जो करने के लिए रास्ते में वाक्य रचना के अर्थ बनाता है। मैं इसकी पुरजोर सलाह देता हूँ।

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