दिलचस्प पोस्ट
एंड्रॉइड एडीटी त्रुटि, dx.jar एसडीके फ़ोल्डर से लोड नहीं किया गया था यदि ब्राउज़र इंटरनेट एक्सप्लोरर है: इसके बजाय एक वैकल्पिक स्क्रिप्ट चलाएं MediaPlayer.setDataSource वैध फ़ाइल के लिए IOException का कारण बनता है जर्सी अनुरोध के संदर्भ में एक वस्तु इंजेक्षन कैसे करें? क्या मेरे PHP फ़ंक्शन तर्कों की एक सरणी स्वीकार करते हैं या मुझे स्पष्ट रूप से तर्कों का अनुरोध करना चाहिए? वेबव्यू में फ़ाइल अपलोड करें जावा या वेनिला जावास्क्रिप्ट में डोम उत्परिवर्तन की घटना मैं पायथन में एक नई लाइन कैसे निर्दिष्ट करूं? एक्सएचटीएमएल / सीएसएस: आंतरिक डिवाइंड को 100% चौड़ाई घटाकर दूसरे डिवा चौड़ाई कैसे बनाया जाए दो divs, एक निश्चित चौड़ाई, दूसरे, बाकी एनजीएफएर एंज्यूलर 2 में पाइप के साथ डेटा अपडेट नहीं करता है IIS7 में net.tcp सक्षम करना एंड्रॉइड में HTTP क्लाइंट का उपयोग करते हुए JSON में पोस्ट अनुरोध कैसे भेजें? क्या केवल जावास्क्रिप्ट का उपयोग करने के लिए डेटा लिखना संभव है? "अनुपस्थित रिटर्न स्टेटमेंट" के भीतर अगर / के लिए / जबकि

हास्केल के साथ आरंभ करना

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

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

वेब के समाधान से एकत्रित समाधान "हास्केल के साथ आरंभ करना"

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

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

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

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

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

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

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

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

शुरुआती

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

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

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

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

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

मध्यम

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

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

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

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

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

  • HUnit : इकाई परीक्षण में हैकेल

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

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

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

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

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

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

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

  • Arrays : Haskell में विभिन्न अस्थिर / अपरिवर्तनीय arrays

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

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

आपके पास बहुत सी नई भाषा सुविधाएं हैं जिन पर आपको एक नजर रखना चाहिए। मैं सिर्फ उनकी सूची बनाऊँगा , आप उनके बारे में बहुत सारी जानकारी Google से पा सकते हैं, हैस्केल विकीबूक , हैक्लेल्विक्य। साइट और जीसीसी दस्तावेज़ीकरण ।

  • मल्टीपार्मेटर प्रकार वर्ग / कार्यात्मक निर्भरताएं
  • परिवारों को टाइप करें
  • अस्तित्व में मात्रात्मक प्रकार
  • प्रेत प्रकार
  • GADTS
  • दूसरों …

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

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

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

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

विशेषज्ञ

यह आपको इस चरण (साल 2009 से नमस्कार) में आने के लिए साल लगेगा, लेकिन यहां से मैं अनुमान लगा रहा हूं कि आप पीएचडी पेपर, नए जीएन एक्सटेंशन लिखना शुरू करते हैं और नए एब्सट्रैक्शन के साथ आ रहे हैं।

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

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

  • #haskell irc चैनल
  • मेलिंग सूची ये सिर्फ चर्चाओं को पढ़ने के लिए साइन अप करने के लिए साइन अप हैं – कुछ बहुत दिलचस्प हैं
  • haskell.org मुख पृष्ठ पर सूचीबद्ध अन्य स्थानों

निष्कर्ष

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

मेरे कुछ सहयोगी के लिए अच्छा अनुभव के लिए जानें आप हास्केल के साथ अच्छा अनुभव था ! ।

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

और यहां भी उत्तर जांचें

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

मैंने जो कुछ हस्केल कार्यक्रम किए हैं, वे परियोजना ऑयलर समस्याओं को हल करने के लिए किया गया है।

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

मुझे हास्केल का उपयोग करते हुए कार्यात्मक प्रोग्रामिंग पर यह 13 एपिसोड श्रृंखला देखने में मजा आया

सी 9 व्याख्यान: डॉ। एरिक मेइजर – कार्यात्मक प्रोग्रामिंग मूल सिद्धांत: http://channel9.msdn.com/shows/ जा रहे हैं + डिप / व्याख्यान- सिरीज़-एरिक-मीज़र -फंक्शनल -प्रोग्राममिंग -फंडैंटल -प्राप्ति -1

दूसरों के उत्तर जोड़ने के लिए – एक उपयोगी है जो आपकी मदद करेगा जब कोडिंग (उदाहरण के लिए, यूलर समस्या को हल करने के लिए): Hoogle आप या तो कमांड लाइन इंटरफ़ेस या वेब इंटरफ़ेस का उपयोग कर सकते हैं।

कमांड लाइन

आपके द्वारा हास्केल प्लेटफ़ॉर्म cabal install hoogle लिए सुनिश्चित करें

होल उपयोग का उदाहरण:

आपके पास एक समारोह fx = 3 * x + 1 और आप इसे (5 :: Int) पर लागू करना चाहते हैं, फिर परिणाम पर और उस परिणाम पर और उस पर लागू करें और उन मानों की अनंत सूची प्राप्त करें। आपको संदेह है कि वहां आपकी सहायता करने के लिए पहले से कोई फ़ंक्शन मौजूद है (विशेष रूप से आपके f लिए नहीं)।

यह समारोह प्रकार (a -> a) -> a -> [a] यदि यह f 5 या a -> (a -> a) -> [a] लेता है अगर 5 f लगते हैं (हम फ़ंक्शन को मानते हैं सामान्य प्रकार के लिए है और न सिर्फ Int एस)

 $ hoogle "a -> (a -> a) -> [a]" Prelude iterate :: (a -> a) -> a -> [a] 

हां, जो फ़ंक्शन आपको पहले से मौजूद है और उसे iterate कहा जाता है आप इसे iterate func 5 द्वारा उपयोग करते हैं!

वेब इंटरफेस

एक ही उदाहरण के परिणाम यहां पाये जा सकते हैं ।

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

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

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

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

मैं #haskell irc चैनल में शामिल होने और वहाँ सवाल पूछने का सुझाव दिया था। इसी तरह मैंने हॉस्केल को सीखा। यदि आप ऊपर बताए गए अनुसार रीयल वर्ल्ड हास्केल के माध्यम से जाते हैं, तो आपके प्रश्नों का वास्तविक समय उत्तर बहुत मदद करेगा #haskell पर बहुत सारे स्मार्ट लोग मस्ती के लिए और लाभ के लिए हास्केल लिखते हैं, तो आपको बहुत सारे अच्छे इनपुट मिलेंगे कोशिश करो!

ये मेरी पसंदीदा हैं

हास्केल: प्रकार के साथ कार्यात्मक प्रोग्रामिंग

 Joeri van Eekelen, et al. | Wikibooks Published in 2012, 597 pages 

रियल वर्ल्ड हास्केल

  B. O'Sullivan, J. Goerzen, D. Stewart | OReilly Media, Inc. Published in 2008, 710 pages 

मैं इसके अतिरिक्त एक और हस्केल ट्यूटोरियल को एक परिचय के रूप में सुझा सकता हूं

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

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

एक विशेषज्ञ Haskell हैकर के ज्ञान के लिए दो चाबियाँ हैं:

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

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

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

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

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

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

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

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

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

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

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

http://www.haskell.org/haskellwiki/Typeclassopedia

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

एक एकीकृत प्रणाली अपना समय बचा सकती है: http://hackage.haskell.org/platform/

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

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

हास्केल_98_प्रिएक्टर्स और टाइपक्लासोपैडिया के बाद, मुझे लगता है कि आप स्वयं को स्वयं के बारे में पहले से ही दस्तावेज़ और पढ़ सकते हैं

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

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

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

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

अगर आपके पास केवल अनिवार्य / ओओ भाषाओं का अनुभव है, तो मैं सुझाव देता हूं कि एक कदम पत्थर के रूप में एक अधिक पारंपरिक कार्यात्मक भाषा का उपयोग करना। हास्केल वास्तव में अलग है और आप को कहीं भी विभिन्न अवधारणाओं को समझना होगा। मैं एक एमएल-शैली की भाषा (जैसे एफ #) को पहले से निपटने का सुझाव देता हूं।

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

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