haskell - हास्केल के साथ शुरू करना




functional-programming (10)

अजीब रूपकों के साथ सभी मोनोड ट्यूटोरियल पढ़ने की कोशिश मत करो। वे आपको और भी बदतर हो जाएंगे।

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

तो, आपने हास्केल कैसे सीखा? क्या आपने वास्तव में "बर्फ तोड़ दिया"? इसके अलावा, अभ्यास शुरू करने के लिए कोई अच्छा विचार?


इसमें आसान कार्यक्रम लिखने का प्रयास करें।

आप शायद विभिन्न पाठ्यपुस्तकों में नमूना कार्य पा सकते हैं।

मैं हास्केल / एफपी पाठ्यपुस्तकों से चिपकने की अनुशंसा नहीं करता, बस इसके साथ सरल चीजें करने की कोशिश करें: गणना, स्ट्रिंग मैनिप्लेशंस, फ़ाइल का उपयोग।

एक दर्जन हल करने के बाद, मैंने बर्फ तोड़ दिया :)

इसके बाद, उन्नत अवधारणाओं (मोनाड्स, तीर, आईओ, रिकर्सिव डेटा संरचनाओं) पर बहुत कुछ पढ़ें, क्योंकि हैकेल अनंत है और उनमें से बहुत सारे हैं।


पहला जवाब बहुत अच्छा है। विशेषज्ञ स्तर तक पहुंचने के लिए, आपको कुछ विशेषज्ञों के साथ पीएचडी करना चाहिए।

मेरा सुझाव है कि आप हास्केल पेज पर जाएं: http://haskell.org । हास्केल समुदाय द्वारा अनुमोदित, हास्केल में सबसे अद्यतित सामग्री के लिए आपके पास बहुत सारी सामग्री है, और बहुत सारे संदर्भ हैं।


मुझे लगता है कि उदाहरणों से हास्केल की सुविधा को महसूस करना सभी के ऊपर शुरू करने का सबसे अच्छा तरीका है।

http://en.wikipedia.org/wiki/Haskell_98_features

यहां मोनैड और तीरों सहित मुश्किल प्रकार के वर्ग हैं

Typeclassopedia

वास्तविक दुनिया की समस्याओं और बड़ी परियोजना के लिए, इन टैग को याद रखें: जीएचसी (सबसे अधिक इस्तेमाल किया गया कंपाइलर), हैकेज (लाइब्रेरीडीबी), कैबल (बिल्डिंग सिस्टम), डार्क्स (एक और इमारत प्रणाली)।

एक एकीकृत सिस्टम आपका समय बचा सकता है: http://hackage.haskell.org/platform/

इस सिस्टम के लिए पैकेज डेटाबेस: http://hackage.haskell.org/

जीएचसी कंपाइलर की विकी: http://www.haskell.org/haskellwiki/GHC

Haskell_98_features और Typeclassopedia के बाद, मुझे लगता है कि आप पहले से ही अपने बारे में दस्तावेज ढूंढ सकते हैं और पढ़ सकते हैं

वैसे, आप कुछ जीएचसी के भाषा विस्तार का परीक्षण करना चाह सकते हैं जो भविष्य में हैकेल मानक का हिस्सा हो सकता है।

हैकेल सीखने के लिए यह मेरा सबसे अच्छा तरीका है। उम्मीद है यह आपकी मदद कर सकता है।


मेरा सुझाव है कि आप पहली बार बोनस के ट्यूटोरियल को पढ़कर शुरू करें, और फिर रियल वर्ल्ड हास्केल (मुफ्त में ऑनलाइन) पढ़ना शुरू करेंIrc.freenode.com पर # हास्केल आईआरसी चैनल में शामिल हों, और प्रश्न पूछें। ये लोग पूरी तरह से नौसिखिया दोस्ताना हैं, और मुझे समय के साथ बहुत मदद की है। इसके अलावा, यहां उन चीजों के साथ मदद पाने के लिए एसओ पर एक बेहतरीन जगह है जिसे आप समझ नहीं सकते! एक बार क्लिक होने पर निराश न होने का प्रयास करें, आपका दिमाग उड़ाया जाएगा।

बोनस 'ट्यूटोरियल आपको प्रमुख बना देगा, और आपको रोमांचकारी सवारी के लिए तैयार हो जाएगा जो रियल वर्ल्ड हास्केल लाता है। मेरी तुम्हें शुभकामनाएँ!


मेरे कुछ सहयोगी को ग्रेट गुड के लिए हास्केल सीखने के साथ अच्छा अनुभव था !

ट्यूटोरियल उन लोगों के लिए लक्षित है जिनके पास अनिवार्य प्रोग्रामिंग भाषाओं में अनुभव है लेकिन पहले एक कार्यात्मक भाषा में प्रोग्राम नहीं किया गया है।

और here जवाब भी देखें


मैं इस गाइड को हैकेल में आपके कौशल के स्तर से आदेश देने जा रहा हूं, एक पूर्ण शुरुआत से एक विशेषज्ञ तक जा रहा हूं। ध्यान दें कि इस प्रक्रिया में कई महीने लगेंगे (साल?), इसलिए यह काफी लंबा है।

बिलकुल शुरुआती

सबसे पहले, हैकेल पर्याप्त कौशल के साथ कुछ भी करने में सक्षम है। यह बहुत तेज़ है (मेरे अनुभव में केवल सी और सी ++ के पीछे), और सिमुलेशन से सर्वर, guis और वेब अनुप्रयोगों के लिए कुछ भी इस्तेमाल किया जा सकता है।

हालांकि कुछ ऐसी समस्याएं हैं जो दूसरों के मुकाबले हैकेल में शुरुआती के लिए लिखना आसान है। गणितीय समस्याएं और सूची प्रक्रिया कार्यक्रम इसके लिए अच्छे उम्मीदवार हैं, क्योंकि उन्हें लिखने में सक्षम होने के लिए केवल सबसे बुनियादी हैकेल ज्ञान की आवश्यकता होती है।

सबसे पहले, हैकेल की मूलभूत बातें सीखने के लिए कुछ अच्छे मार्गदर्शिकाएं हैंशेल सीखने वाले हैंकेल ट्यूटोरियल और पहले 6 अध्याय आपको एक हैकेल सीखने के लिए हैं । इन्हें पढ़ने के दौरान, आप जो जानते हैं उसके साथ सरल समस्याओं को हल करना भी एक अच्छा विचार है।

पहले दो सिद्धांतों से हास्केल प्रोग्रामिंग और हास्केल में प्रोग्रामिंग एक और दो अच्छे संसाधन हैं। वे दोनों प्रत्येक अध्याय के लिए व्यायाम के साथ आते हैं, इसलिए आपके पास पिछले कुछ पृष्ठों पर जो कुछ आपने सीखा है उससे मेल खाने वाली छोटी सी छोटी समस्याएं हैं।

कोशिश करने के लिए समस्याओं की एक अच्छी सूची हैकेल 99 समस्या पृष्ठ है । ये बहुत बुनियादी शुरू होते हैं, और जब आप आगे बढ़ते हैं तो अधिक कठिन हो जाते हैं। उनमें से बहुत से काम करना बहुत अच्छा अभ्यास है, क्योंकि वे आपको रिकर्सन और उच्च ऑर्डर फ़ंक्शंस में अपने कौशल का अभ्यास करने देते हैं। मैं यादृच्छिकता की आवश्यकता वाले किसी भी समस्या को छोड़ने की अनुशंसा करता हूं क्योंकि यह हैकेल में थोड़ा और मुश्किल है। यदि आप क्विक चेक के साथ अपने समाधानों का परीक्षण करना चाहते हैं तो इस SO प्रश्न को जांचें (नीचे इंटरमीडिएट देखें)।

एक बार जब आप उनमें से कुछ कर लेंगे, तो आप कुछ परियोजना यूलर समस्याओं को करने के लिए आगे बढ़ सकते हैं। इन्हें हल किया जाता है कि कितने लोगों ने उन्हें पूरा कर लिया है, जो कठिनाई का काफी अच्छा संकेत है। ये आपके तर्क का परीक्षण करते हैं और पिछली समस्याओं से अधिक हैकेल करते हैं, लेकिन आपको अभी भी पहले कुछ करने में सक्षम होना चाहिए। इन समस्याओं के साथ एक बड़ा लाभ हैकेल है इंटीजर आकार में सीमित नहीं हैं। इनमें से कुछ समस्याओं को पूरा करने के लिए, आपको एक हैकेल सीखने के अध्याय 7 और 8 पढ़ने के लिए उपयोगी होगा।

शुरुआती

इसके बाद आपको रिकर्सन और उच्च ऑर्डर फ़ंक्शंस पर काफी अच्छा संभाल होना चाहिए, इसलिए कुछ और वास्तविक दुनिया की समस्याओं को शुरू करने के लिए यह एक अच्छा समय होगा। शुरू करने के लिए एक बहुत अच्छी जगह असली वर्ल्ड हैस्केल (ऑनलाइन पुस्तक, आप एक हार्ड कॉपी भी खरीद सकते हैं)। मैंने पाया कि पहले कुछ अध्यायों ने किसी ऐसे व्यक्ति के लिए बहुत तेज़ी से पेश किया जिसने पहले कभी कार्यात्मक प्रोग्रामिंग / प्रयुक्त रिकर्सन नहीं किया है। हालांकि अभ्यास के साथ आपको पिछली समस्याओं को करने से होता था, आपको इसे पूरी तरह से समझना चाहिए।

पुस्तक में समस्याओं के माध्यम से कार्य करना सीखने का एक शानदार तरीका है कि कैसे अबास्ट्रक्शन को प्रबंधित करना और हैकेल में पुन: प्रयोज्य घटकों का निर्माण करना है। ऑब्जेक्ट-ओरिएंटेड (ओओ) प्रोग्रामिंग के लिए उपयोग किए जाने वाले लोगों के लिए यह महत्वपूर्ण है, क्योंकि सामान्य ओओ अबास्ट्रक्शन विधियों (ओओ कक्षाएं) हैकेल में दिखाई नहीं देती हैं (हैकेल के प्रकार वर्ग हैं, लेकिन वे ओओ कक्षाओं के लिए बहुत अलग हैं, ओओ इंटरफेस की तरह )। मुझे नहीं लगता कि अध्यायों को छोड़ना अच्छा विचार है, क्योंकि प्रत्येक ने बाद में अध्यायों में उपयोग किए जाने वाले बहुत से नए विचार प्रस्तुत किए हैं।

थोड़ी देर के बाद आप अध्याय 14, डरावनी monads अध्याय (डम डम डमम्म) प्राप्त करेंगे। हैकेल को सीखने वाले लगभग हर किसी को मोनैड समझने में परेशानी होती है, क्योंकि अवधारणा कितनी सारणी है। मैं किसी अन्य भाषा में किसी भी अवधारणा के बारे में नहीं सोच सकता जो कि अमूर्त है क्योंकि मोनैड कार्यात्मक प्रोग्रामिंग में हैं। मोनाड्स कई विचारों (जैसे आईओ ऑपरेशंस, कंप्यूटेशंस जो असफल हो सकते हैं, पार्सिंग, ...) को एक विचार के तहत एकीकृत करने की अनुमति देता है। तो मोनैड अध्याय पढ़ने के बाद यदि आप वास्तव में उन्हें समझ में नहीं आते हैं तो निराश न हों। मैंने मोनैड के कई अलग-अलग स्पष्टीकरण पढ़ने के लिए उपयोगी पाया; प्रत्येक व्यक्ति समस्या पर एक नया परिप्रेक्ष्य देता है। यहां मोनड ट्यूटोरियल की एक बहुत अच्छी सूची है । मैं मोनाड्स के बारे में सभी की अत्यधिक अनुशंसा करता हूं , लेकिन अन्य भी अच्छे हैं।

इसके अलावा, अवधारणाओं के लिए वास्तव में डूबने में कुछ समय लगता है। यह उपयोग के माध्यम से आता है, लेकिन समय के माध्यम से भी। मुझे लगता है कि कभी-कभी किसी समस्या पर सोना किसी और चीज से ज्यादा मदद करता है! आखिरकार, विचार क्लिक करेगा, और आपको आश्चर्य होगा कि आप एक अवधारणा को समझने के लिए क्यों संघर्ष कर रहे थे कि वास्तव में अविश्वसनीय रूप से सरल है। यह तब होता है जब यह होता है, और जब ऐसा होता है, तो आप अपने पसंदीदा अनिवार्य प्रोग्रामिंग भाषा होने के लिए हैकेल पा सकते हैं :)

यह सुनिश्चित करने के लिए कि आप पूरी तरह से हास्केल प्रकार प्रणाली को समझ रहे हैं, आपको 20 इंटरमीडिएट हैकेल अभ्यास को हल करने का प्रयास करना चाहिए। वे "फरी" और "केले" जैसे कार्यों के मजेदार नामों का उपयोग करते हुए अभ्यास करते हैं और यदि आपके पास पहले से नहीं है तो कुछ बुनियादी कार्यात्मक प्रोग्रामिंग अवधारणाओं की अच्छी समझ प्राप्त करने में आपकी सहायता करता है। तीर, यूनिकॉर्न्स, सॉसेज और प्यारे केले के साथ कवर पेपर की सूची के साथ अपनी शाम बिताने का अच्छा तरीका।

मध्यम

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

अब आप असली दुनिया हैकेल पुस्तक को पूरा कर सकते हैं यदि आप चाहें। अध्यायों को छोड़ना अब वास्तव में कोई फर्क नहीं पड़ता, जब तक आप पैरों के नीचे monads है। बस चुनें कि आप किसमें रुचि रखते हैं।

आपके पास अब ज्ञान के साथ, आप कैबल पर अधिकतर पैकेज (अच्छी तरह से दस्तावेज वाले कम से कम ...) के साथ-साथ हैकेल के साथ आने वाले अधिकांश पुस्तकालयों का उपयोग करने में सक्षम होना चाहिए। कोशिश करने के लिए दिलचस्प पुस्तकालयों की एक सूची होगी:

  • Parsec : प्रोग्रामिंग और पाठ पार्सिंग के लिए। Regexps का उपयोग करने से काफी बेहतर है। उत्कृष्ट दस्तावेज, एक असली दुनिया हैकेल अध्याय भी है।

  • Quickcheck : एक बहुत अच्छा परीक्षण कार्यक्रम। आप जो करते हैं वह एक भविष्यवाणी लिखता है जो हमेशा सत्य होना चाहिए (उदाहरण के लिए length (reverse lst) == length lst )। फिर आप त्वरित जांच को पास करते हैं, और यह बहुत सारे यादृच्छिक मान उत्पन्न करेगा (इस मामले में सूचियों में) और परीक्षण करें कि भविष्यवाणी सभी परिणामों के लिए सच है। ऑनलाइन मैनुअल भी देखें।

  • HUnit : HUnit यूनिट परीक्षण।

  • gtk2hs : gtk2hs लिए सबसे लोकप्रिय गुई ढांचा, आपको gtk2hs में gtk अनुप्रयोग लिखने देता है।

  • happstack : happstack एक वेब विकास ढांचा। डाटाबेस का उपयोग नहीं करता है, बजाय डेटा प्रकार की दुकान। बहुत अच्छे दस्तावेज़ (अन्य लोकप्रिय ढांचे snap और yesod )।

इसके अलावा, कई अवधारणाएं हैं (जैसे मोनाड अवधारणा) जिन्हें आपको अंततः सीखना चाहिए। मोनाड्स को पहली बार सीखने से यह आसान होगा, क्योंकि आपके दिमाग का उपयोग अमूर्तता के स्तर से निपटने के लिए किया जाएगा। इन उच्च स्तरीय अवधारणाओं के बारे में सीखने के लिए एक बहुत अच्छा अवलोकन और वे एक साथ कैसे फिट होते हैं Typeclassopedia

  • आवेदक: मोनाड्स की तरह एक इंटरफ़ेस, लेकिन कम शक्तिशाली। हर मोनाड आवेदक है, लेकिन इसके विपरीत नहीं। यह उपयोगी है क्योंकि कुछ प्रकार हैं जो आवेदक हैं लेकिन मोनैड नहीं हैं। इसके अलावा, आवेदक कार्यों का उपयोग करके लिखा गया कोड अक्सर मोनाड कार्यों का उपयोग करके समकक्ष कोड लिखने से अधिक composable है। एक हैकेल गाइड सीखने से फंक्टर, आवेदक फंक्शंस और मोनोइड्स देखें।

  • Foldable , Traversable : टाइपक्लास जो सूचियों के कई संचालनों को अमूर्त करते हैं, ताकि एक ही कार्य अन्य कंटेनर प्रकारों पर लागू किया जा सके। हैकेल विकी व्याख्या भी देखें।

  • Monoid : एक मोनॉयड एक प्रकार है जिसमें शून्य (या याद) मान होता है, और एक ऑपरेशन, नोट किया गया <> जो दो मोनोइड्स को एक साथ जोड़ता है, जैसे x <> mempty = mempty <> x = x और x <> (y <> z) = (x <> y) <> z । इन्हें पहचान और सहयोगी कानून कहा जाता है। कई प्रकार मोनोइड्स हैं, जैसे संख्याएं, mempty = 0 और <> = + । यह कई परिस्थितियों में उपयोगी है।

  • Arrows : तीर उन गणनाओं का प्रतिनिधित्व करने का एक तरीका है जो इनपुट लेते हैं और आउटपुट लौटाते हैं। एक समारोह सबसे बुनियादी प्रकार का तीर है, लेकिन कई अन्य प्रकार हैं। लाइब्रेरी में तीरों में हेरफेर करने के लिए बहुत उपयोगी कार्य भी होते हैं - वे बहुत उपयोगी होते हैं, भले ही केवल पुराने पुराने हैकेल फ़ंक्शंस के साथ उपयोग किया जाए।

  • Arrays : हैकेल में विभिन्न mutable / अपरिवर्तनीय सरणी।

  • एसटी मोनाड : आपको एक उत्परिवर्तनीय स्थिति के साथ कोड लिखने देता है जो बहुत जल्दी चलता है, जबकि अभी भी मोनैड के बाहर शुद्ध रहता है। अधिक जानकारी के लिए लिंक देखें।

  • एफआरपी: कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग, कोड लिखने का एक नया, प्रयोगात्मक तरीका जो घटनाओं, ट्रिगर, इनपुट और आउटपुट (जैसे एक गुई) को संभालता है। हालांकि मैं इसके बारे में ज्यादा नहीं जानता। यम्पा के बारे में पॉल हुडक की बात अच्छी शुरुआत है।

ऐसी कई नई भाषा विशेषताएं हैं जिन पर आपको देखना चाहिए। मैं उन्हें सिर्फ सूचीबद्ध करूंगा, आप उनके बारे में Google, haskell wikibook , haskellwiki.org साइट और ghc दस्तावेज़ से बहुत सारी जानकारी पा सकते हैं।

  • मल्टीपार्मेटर प्रकार वर्ग / कार्यात्मक निर्भरता
  • परिवार टाइप करें
  • मौजूदा रूप से मात्राबद्ध प्रकार
  • प्रेत प्रकार
  • GADTS
  • दूसरों ...

बहुत सारे हैकेल श्रेणी सिद्धांत के चारों ओर आधारित है , इसलिए आप इसे देखना चाह सकते हैं। एक अच्छा प्रारंभिक बिंदु कंप्यूटर वैज्ञानिक के लिए श्रेणी सिद्धांत है । यदि आप पुस्तक नहीं खरीदना चाहते हैं, तो लेखक का संबंधित article भी उत्कृष्ट है।

अंत में आप विभिन्न हैकेल उपकरण के बारे में और जानना चाहेंगे। इसमें शामिल है:

  • ghc (और इसकी सभी विशेषताएं)
  • cabal : हैकेल पैकेज सिस्टम
  • darcs : darcs में लिखे एक वितरित संस्करण नियंत्रण प्रणाली, हैकेल कार्यक्रमों के लिए बहुत लोकप्रिय है।
  • haddock : एक हैकेल स्वचालित दस्तावेज जनरेटर

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

विशेषज्ञ

इस चरण में आने के लिए आपको वर्षों लगेगा (200 9 से हैलो!), लेकिन यहां से मुझे लगता है कि आप पीएचडी पेपर, नए ghc एक्सटेंशन लिखना शुरू कर रहे हैं, और नए abstractions के साथ आना शुरू कर देंगे।

सहायता ले रहा है

अंत में, सीखने के किसी भी चरण में, जानकारी प्राप्त करने के लिए कई जगहें हैं। य़े हैं:

  • # हास्केल आईआरसी चैनल
  • मेलिंग सूचियां ये होने वाली चर्चाओं को पढ़ने के लिए साइन अप करने के लायक हैं - कुछ बहुत ही रोचक हैं।
  • haskell.org होम पेज पर सूचीबद्ध अन्य स्थान

निष्कर्ष

वैसे यह मेरी अपेक्षा से अधिक लंबा हो गया ... वैसे भी, मुझे लगता है कि हैकेल में कुशल बनना बहुत अच्छा विचार है। इसमें काफी समय लगता है, लेकिन यह मुख्य रूप से इसलिए है क्योंकि आप ऐसा करके सोचने का एक बिल्कुल नया तरीका सीख रहे हैं। यह जावा सीखने के बाद रूबी सीखने की तरह नहीं है, लेकिन सी सीखने के बाद जावा सीखना पसंद है। साथ ही, मुझे लगता है कि सीखने के हैकेल के परिणामस्वरूप मेरे ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कौशल में सुधार हुआ है, क्योंकि मैं विचारों को सारणित करने के कई नए तरीकों को देख रहा हूं।


मैं एक परिचय के रूप में अभी तक एक और हास्केल ट्यूटोरियल की सिफारिश कर सकते हैं।

एक और अच्छा सीखने का संसाधन (शायद मध्यवर्ती स्तर पर), जिसने मुझे बहुत मदद की है और जहां तक ​​मैं देख सकता हूं, अन्य उत्तरों में इसका उल्लेख नहीं किया गया है, ब्रेंट जोर्ज़ी का टाइपक्लासोपियाडिया है , जो मोनाड रीडर (अंक में पाया जा सकता है) 13)

यह एक बहुत ही सुलभ शैली में लिखा गया है और इसमें कई अन्य चीजों के साथ शामिल है, निम्नलिखित प्रारंभिक सलाह:

एक विशेषज्ञ हास्केल हैकर के ज्ञान के लिए दो कुंजी हैं:

  1. प्रकारों को समझें।

  2. प्रत्येक प्रकार के वर्ग और अन्य प्रकार के वर्गों के साथ इसके संबंधों के लिए गहरी अंतर्ज्ञान प्राप्त करें, कई उदाहरणों के साथ परिचितता का समर्थन करें।

मोनाड रीडर स्वयं कार्यात्मक प्रोग्रामर के लिए एक पूर्ण खजाना ट्रोव है (न केवल हास्केल प्रोग्रामर)।


यहां एक अच्छी किताब है जिसे आप ऑनलाइन पढ़ सकते हैं: रियल वर्ल्ड हास्केल

मेरे द्वारा किए गए अधिकांश हास्केल कार्यक्रम परियोजना यूलर समस्याओं को हल करने के लिए किए गए हैं।

एक बार सलाह के टुकड़े को मैंने बहुत पहले नहीं पढ़ा था कि आपके पास सरल समस्याओं का एक मानक सेट होना चाहिए जो आपको पता है कि कैसे हल करें (सिद्धांत में) और फिर जब भी आप एक नई भाषा सीखने का प्रयास करते हैं तो आप उस भाषा में उन समस्याओं को लागू करते हैं।


हास्केल में ग्राहम हटन का प्रोग्रामिंग संक्षेप में, उचित रूप से पूर्ण है, और उनके वर्षों के शिक्षण हास्केल वास्तव में दिखाते हैं। यह लगभग हमेशा होता है जो मैं लोगों से शुरू करने की सलाह देता हूं, भले ही आप वहां से कहां जाएं।

विशेष रूप से, अध्याय 8 ("कार्यात्मक पार्सर्स") असली आधार प्रदान करता है जो आपको मोनाड्स से निपटने के लिए आवश्यक है, और मुझे लगता है कि शुरू करने के लिए अब तक का सबसे अच्छा स्थान है, उसके बाद मोनाड्स के बारे में सब कुछ । (उस अध्याय के संबंध में, हालांकि, वेब साइट से इरेटा नोट करें, हालांकि: आप कुछ विशेष सहायता के बिना do फॉर्म का उपयोग नहीं कर सकते हैं। आप पहले टाइपक्लास के बारे में जानना चाहेंगे और उस समस्या को अपने आप हल कर सकते हैं।)

यह शायद हीस्सेल शुरुआती लोगों पर जोर दिया जाता है, लेकिन मोनैड का उपयोग करने के बारे में नहीं, बल्कि अपने स्वयं के निर्माण के बारे में काफी जल्दी सीखना उचित है। यह कठिन नहीं है, और अनुकूलित लोग कई कार्यों को और अधिक सरल बना सकते हैं।







functional-programming