हास्केल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 25: Line 25:
| file ext = .hs, .lhs
| file ext = .hs, .lhs
}}
}}
हास्केल ({{IPAc-en|ˈ|h|æ|s|k|əl}}<ref>{{cite mailing list |url=http://www.haskell.org/pipermail/haskell-cafe/2008-January/038756.html |title=कोई मुझे "हास्केल" का उच्चारण बता सकता है?|date=28 January 2008 |access-date=12 March 2011 |mailing-list=Haskell-cafe |last=Chevalier |first=Tim}}</ref>) सामान्य-उद्देश्य वाली [[ प्रोग्रामिंग भाषा ]] है। जिसका सामान्य-उद्देश्य, [[ स्थिर टाइपिंग ]]या स्थैतिक रूप से टाइप की गई, प्रकार अनुमान और [[ आलसी मूल्यांकन ]] के साथ [[ विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग ]] प्रोग्रामिंग भाषा में प्रोग्राम करना हैं।<ref>Type inference originally using [[Type inference#Hindley–Milner type inference algorithm|Hindley-Milner type inference]]</ref>{{sfn|Peyton Jones|2003}} शिक्षण, अनुसंधान और औद्योगिक अनुप्रयोगों के लिए इसे डिज़ाइन किया गया, हास्केल ने कई प्रोग्रामिंग भाषाओं की सुविधाओं को प्रदान किया है जैसे कि [[ वर्ग टाइप करें ]], जो टाइप करने की सुरक्षा को सक्षम बनाता हैं। टाइप-सेफ[[ ऑपरेटर ओवरलोडिंग ]], और मोनाड (फंक्शनल प्रोग्रामिंग) इनपुट/आउटपुट के लिए बहुत उपयोगी हैं। हास्केल का मुख्य कार्यान्वयन [[ ग्लासगो हास्केल कंपाइलर ]] (जीएचसी) है। इसका नाम [[ तर्क ]]विद्वान[[ हास्केल करी ]] के नाम पर रखा गया है।{{sfn|Hudak|Hughes|Peyton Jones|Wadler|2007}} हास्केल के सिमेंटिक्स (कंप्यूटर विज्ञान) को ऐतिहासिक रूप से [[ मिरांडा (प्रोग्रामिंग भाषा) ]] प्रोग्रामिंग भाषा पर आधारित हैं, जो प्रारंभिक हास्केल वर्किंग ग्रुप के प्रयासों पर ध्यान केंद्रित करने के लिए काम करता था।<ref>Edward Kmett, [https://www.youtube.com/watch?v=hIZxTQP1ifo Edward Kmett – Type Classes vs. the World]</ref> भाषा का अंतिम औपचारिक विनिर्देश जुलाई 2010 में बनाया गया था, जबकि जीएचसी का विकास भाषा विस्तार के माध्यम से हास्केल का विस्तार करना जारी रखता है।
हास्केल ({{IPAc-en|ˈ|h|æ|s|k|əl}}<ref>{{cite mailing list |url=http://www.haskell.org/pipermail/haskell-cafe/2008-January/038756.html |title=कोई मुझे "हास्केल" का उच्चारण बता सकता है?|date=28 January 2008 |access-date=12 March 2011 |mailing-list=Haskell-cafe |last=Chevalier |first=Tim}}</ref>) सामान्य-उद्देश्य वाली [[ प्रोग्रामिंग भाषा ]] है। जिसका सामान्य-उद्देश्य, [[ स्थिर टाइपिंग ]]या स्थैतिक रूप से टाइप की गई, प्रकार अनुमान और [[ आलसी मूल्यांकन ]] के साथ [[ विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग ]] प्रोग्रामिंग भाषा में प्रोग्राम करना हैं।<ref>Type inference originally using [[Type inference#Hindley–Milner type inference algorithm|Hindley-Milner type inference]]</ref>{{sfn|Peyton Jones|2003}} शिक्षण, अनुसंधान और औद्योगिक अनुप्रयोगों के लिए इसे डिज़ाइन किया गया, हास्केल ने कई प्रोग्रामिंग भाषाओं की सुविधाओं को प्रदान किया है जैसे कि [[ वर्ग टाइप करें ]], जो टाइप करने की सुरक्षा को सक्षम बनाता हैं। टाइप-सेफ[[ ऑपरेटर ओवरलोडिंग ]], और मोनाड (फंक्शनल प्रोग्रामिंग) इनपुट/आउटपुट के लिए बहुत उपयोगी हैं। हास्केल का मुख्य कार्यान्वयन [[ ग्लासगो हास्केल कंपाइलर ]] (जीएचसी) है। इसका नाम [[ तर्क ]]विद्वान[[ हास्केल करी ]] के नाम पर रखा गया है।{{sfn|Hudak|Hughes|Peyton Jones|Wadler|2007}} हास्केल के सिमेंटिक्स (कंप्यूटर विज्ञान) को ऐतिहासिक रूप से [[ मिरांडा (प्रोग्रामिंग भाषा) ]] प्रोग्रामिंग भाषा पर आधारित हैं, जो प्रारंभिक हास्केल वर्किंग ग्रुप के प्रयासों पर ध्यान केंद्रित करने के लिए कार्य करता था।<ref>Edward Kmett, [https://www.youtube.com/watch?v=hIZxTQP1ifo Edward Kmett – Type Classes vs. the World]</ref> भाषा का अंतिम औपचारिक विनिर्देश जुलाई 2010 में बनाया गया था, जबकि जीएचसी का विकास भाषा के विस्तार के माध्यम से हास्केल का विस्तार करना जारी रखता है।


हास्केल का उपयोग अकादमिक और उद्योग में किया जाता है।<ref>{{Citation|last=Mossberg|first=Erik|title=erkmos/haskell-companies|date=2020-06-08|url=https://github.com/erkmos/haskell-companies|access-date=2020-06-22}}</ref><ref>{{cite book |last1=O'Sullivan |first1=Bryan |last2=Goerzen |first2=John |last3=Stewart |first3=Donald Bruce |title=रियल वर्ल्ड हास्केल: कोड जिस पर आप विश्वास कर सकते हैं|date=15 November 2008 |publisher="O'Reilly Media, Inc." |isbn=978-0-596-55430-9 |pages=xxviii-xxxi |url=https://books.google.com/books?id=nh0okI1a1sQC |language=en}}</ref><ref>{{cite web|title=प्रोडक्शन में हास्केल: रिस्कबुक|url=https://serokell.io/blog/haskell-in-industry-riskbook|access-date=2021-09-07|website=Serokell Software Development Company|language=en}}</ref> {{As of|2021|May}}हास्केल ट्यूटोरियल के लिए गूगल खोजों द्वारा 28वीं सबसे लोकप्रिय प्रोग्रामिंग भाषा थी,<ref>{{cite web|last=|first=|date=May 2021|title=प्रोग्रामिंग लैंग्वेज इंडेक्स की PYPL लोकप्रियता|url=http://pypl.github.io/PYPL.html|url-status=dead|archive-url=https://web.archive.org/web/20210507222106/https://pypl.github.io/PYPL.html|archive-date=7 May 2021|access-date=16 May 2021|website=pypl.github.io|language=en}}</ref> और [[ GitHub | गिट हब (GitHub)]] स्रोत कोड रिपॉजिटरी पर 1% से कम सक्रिय उपयोगकर्ता हैं।<ref>{{cite web|url=https://www.benfrederickson.com/ranking-programming-languages-by-github-users/|title=गिटहब उपयोगकर्ताओं द्वारा रैंकिंग प्रोग्रामिंग भाषाएं|last=Frederickson|first=Ben|website=www.benfrederickson.com|access-date=6 September 2019}}</ref>
हास्केल का उपयोग अकादमिक और उद्योग में किया जाता है।<ref>{{Citation|last=Mossberg|first=Erik|title=erkmos/haskell-companies|date=2020-06-08|url=https://github.com/erkmos/haskell-companies|access-date=2020-06-22}}</ref><ref>{{cite book |last1=O'Sullivan |first1=Bryan |last2=Goerzen |first2=John |last3=Stewart |first3=Donald Bruce |title=रियल वर्ल्ड हास्केल: कोड जिस पर आप विश्वास कर सकते हैं|date=15 November 2008 |publisher="O'Reilly Media, Inc." |isbn=978-0-596-55430-9 |pages=xxviii-xxxi |url=https://books.google.com/books?id=nh0okI1a1sQC |language=en}}</ref><ref>{{cite web|title=प्रोडक्शन में हास्केल: रिस्कबुक|url=https://serokell.io/blog/haskell-in-industry-riskbook|access-date=2021-09-07|website=Serokell Software Development Company|language=en}}</ref> {{As of|2021|May}}हास्केल ट्यूटोरियल के लिए गूगल खोजों द्वारा 28वीं सबसे लोकप्रिय प्रोग्रामिंग भाषा थी,<ref>{{cite web|last=|first=|date=May 2021|title=प्रोग्रामिंग लैंग्वेज इंडेक्स की PYPL लोकप्रियता|url=http://pypl.github.io/PYPL.html|url-status=dead|archive-url=https://web.archive.org/web/20210507222106/https://pypl.github.io/PYPL.html|archive-date=7 May 2021|access-date=16 May 2021|website=pypl.github.io|language=en}}</ref> और [[ GitHub | गिट हब (GitHub)]] स्रोत कोड रिपॉजिटरी पर 1% से कम सक्रिय उपयोगकर्ता हैं।<ref>{{cite web|url=https://www.benfrederickson.com/ranking-programming-languages-by-github-users/|title=गिटहब उपयोगकर्ताओं द्वारा रैंकिंग प्रोग्रामिंग भाषाएं|last=Frederickson|first=Ben|website=www.benfrederickson.com|access-date=6 September 2019}}</ref>
== इतिहास ==
== इतिहास ==


1985 में रिसर्च सॉफ्टवेयर लिमिटेड द्वारा मिरांडा (प्रोग्रामिंग भाषा) जारी करने के बाद आलसी कार्यात्मक भाषाओं में रुचि बढ़ी। 1987 तक, एक दर्जन से अधिक गैर-सख्त कार्य, विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषाएं सम्मलित थीं। मिरांडा सबसे व्यापक रूप से उपयोग किया गया था, लेकिन यह [[ मालिकाना सॉफ्टवेयर ]] था। पोर्टलैंड, ओरेगॉन में [[ कार्यात्मक प्रोग्रामिंग भाषाएं और कंप्यूटर वास्तुकला ]] (FPCA '87) पर सम्मेलन में, एक मजबूत सहमति थी कि ऐसी भाषाओं के लिए एक खुले मानक को परिभाषित करने के लिए समिति का गठन किया जाए। इस समिति का उद्देश्य कार्यात्मक-भाषा डिजाइन में भविष्य के शोध के आधार के रूप में कार्य करने के लिए सम्मलित कार्यात्मक भाषाओं को सरल भाषा में समावेशित करना था।{{sfn|Peyton Jones|2003|loc=Preface}}
1985 में रिसर्च सॉफ्टवेयर लिमिटेड द्वारा मिरांडा (प्रोग्रामिंग भाषा) जारी करने के बाद आलसी कार्यात्मक भाषाओं में रुचि बढ़ी। 1987 तक, एक दर्जन से अधिक गैर-सख्त कार्य, विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषाएं सम्मलित थीं। मिरांडा सबसे व्यापक रूप से उपयोग किया गया था, लेकिन यह [[ मालिकाना सॉफ्टवेयर ]] था। पोर्टलैंड, ओरेगॉन में [[ कार्यात्मक प्रोग्रामिंग भाषाएं और कंप्यूटर वास्तुकला ]] (FPCA '87) पर सम्मेलन में, एक मजबूत सहमति थी कि ऐसी भाषाओं के लिए खुले मानक को परिभाषित करने के लिए समिति का गठन किया जाए। इस समिति का उद्देश्य कार्यात्मक-भाषा डिजाइन में भविष्य के शोध के आधार के रूप में कार्य करने के लिए सम्मलित कार्यात्मक भाषाओं को सरल भाषा में समावेशित करना था।{{sfn|Peyton Jones|2003|loc=Preface}}
=== हास्केल 1.0 से 1.4 ===
=== हास्केल 1.0 से 1.4 ===


हास्केल को एक समिति द्वारा विकसित किया गया था, जहां संभव हो वहां शेल्फ समाधानों को एक साथ लाने का प्रयास किया गया था।
हास्केल को एक समिति द्वारा विकसित किया गया था, जहां संभव हो वहां शेल्फ समाधानों को एक साथ लाने का प्रयास किया गया था।


प्रकार की कक्षाएं, जो प्रकार की सुरक्षा को सक्षम करती हैं। प्रकार-सुरक्षित ऑपरेटर ओवरलोडिंग, पहली बार [[ फिलिप वाडलर ]] और स्टीफन ब्लॉट द्वारा समानता प्रकारों के तदर्थ संचालन और उस समय भाषाओं में अंकगणितीय अधिभार को संबोधित करने के लिए प्रस्तावित किया गया था।<ref>{{cite web|url=https://www.researchgate.net/publication/2710954|title=तदर्थ बहुरूपता को कम तदर्थ कैसे बनाया जाए|last=Wadler|first=Philip|date=October 1988}}</ref>
इसमें कुछ प्रकार की कक्षाएं, जो इसकी सुरक्षा को सक्षम करती हैं। इन प्रकार के सुरक्षित ऑपरेटर ओवरलोडिंग, पहली बार [[ फिलिप वाडलर ]] और स्टीफन ब्लॉट द्वारा समानता से हर प्रकारों के तदर्थ संचालन और उस समय भाषाओं में अंकगणितीय अधिभार को संबोधित करने के लिए प्रस्तावित किया गया था।<ref>{{cite web|url=https://www.researchgate.net/publication/2710954|title=तदर्थ बहुरूपता को कम तदर्थ कैसे बनाया जाए|last=Wadler|first=Philip|date=October 1988}}</ref>
 
हास्केल के प्रारंभिक संस्करणों में संस्करण 1.2 तक और इसमें सम्मलित हैं, उपयोगकर्ता इंटरैक्शन और आईओ (इनपुट और आउटपुट) दोनों स्ट्रीम आधारित और निरंतरता आधारित तंत्र द्वारा नियंत्रित किए गए थे जिन्हें व्यापक रूप से असंतोषजनक माना जाता था।<ref>{{cite web|url=https://www.microsoft.com/en-us/research/publication/wearing-hair-shirt-retrospective-haskell-2003/|title=हेयर शर्ट पहनना: हास्केल पर एक पूर्वव्यापी|last=Peyton Jones|first=Simon|website=[[Microsoft]] |date=2003|ref=none}}</ref> संस्करण 1.3 में, मोनाड_ (कार्यात्मक_प्रोग्रामिंग) आईओ को टाइप क्लास के सामान्यीकरण के साथ-साथ उच्च प्रकार (टाइप कन्स्ट्रक्टर) के साथ पेश किया गया था। नोटेशन के साथ, जो मोनाड टाइप क्लास के लिए सिंटैक्टिक चीनी प्रदान करता है, इसने हास्केल को एक प्रभाव प्रणाली दी जो रेफरेंसियल पारदर्शिता बनाए रखती थी और सुविधाजनक थी।
हास्केल के प्रारंभिक संस्करणों में संस्करण 1.2 तक और इसमें सम्मलित हैं, उपयोगकर्ता इंटरैक्शन और आईओ (इनपुट और आउटपुट) दोनों स्ट्रीम आधारित और निरंतरता आधारित तंत्र द्वारा नियंत्रित किए गए थे जिन्हें व्यापक रूप से असंतोषजनक माना जाता था।<ref>{{cite web|url=https://www.microsoft.com/en-us/research/publication/wearing-hair-shirt-retrospective-haskell-2003/|title=हेयर शर्ट पहनना: हास्केल पर एक पूर्वव्यापी|last=Peyton Jones|first=Simon|website=[[Microsoft]] |date=2003|ref=none}}</ref> संस्करण 1.3 में, मोनाड_ (कार्यात्मक_प्रोग्रामिंग) आईओ को टाइप क्लास के सामान्यीकरण के साथ-साथ उच्च प्रकार (टाइप कन्स्ट्रक्टर) के साथ पेश किया गया था। नोटेशन के साथ, जो मोनाड टाइप क्लास के लिए सिंटैक्टिक चीनी प्रदान करता है, इसने हास्केल को एक प्रभाव प्रणाली दी जो रेफरेंसियल पारदर्शिता बनाए रखती थी और सुविधाजनक थी।


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


हास्केल (हास्केल 1.0) का पहला संस्करण 1990 में परिभाषित किया गया था।{{sfn|Hudak|Hughes|Peyton Jones|Wadler|2007}} समिति के प्रयासों के परिणामस्वरूप भाषा परिभाषाओं की एक श्रृंखला (1.0, 1.1, 1.2, 1.3, 1.4) हुई।
हास्केल (हास्केल 1.0) का पहला संस्करण 1990 में परिभाषित किया गया था।{{sfn|Hudak|Hughes|Peyton Jones|Wadler|2007}} समिति के प्रयासों के परिणामस्वरूप भाषा परिभाषाओं की एक श्रृंखला (1.0, 1.1, 1.2, 1.3, 1.4) हुई।
Line 46: Line 47:
=== हास्केल 98 ===
=== हास्केल 98 ===


1997 के अंत में, हास्केल 98 में श्रृंखला समाप्त हुई, जिसका उद्देश्य भाषा के एक स्थिर, न्यूनतम, पोर्टेबल संस्करण और शिक्षण के लिए एक मानक [[ पुस्तकालय (कंप्यूटर विज्ञान) ]] और भविष्य के विस्तार के लिए आधार के रूप में निर्दिष्ट करना था। समिति ने प्रायोगिक सुविधाओं को जोड़कर और सम्मलित करके हास्केल 98 के एक्सटेंशन और वेरिएंट बनाने का स्पष्ट रूप से स्वागत किया।{{sfn|Peyton Jones|2003|loc=Preface}}
1997 के अंत में, हास्केल 98 में श्रृंखला समाप्त हुई, जिसका उद्देश्य भाषा के स्थिर, न्यूनतम, पोर्टेबल संस्करण और शिक्षण के लिए एक मानक [[ पुस्तकालय (कंप्यूटर विज्ञान) | लाइब्रेरी (कंप्यूटर विज्ञान)]] और भविष्य के विस्तार के लिए आधार के रूप में निर्दिष्ट करना था। समिति ने प्रायोगिक सुविधाओं को जोड़कर और सम्मलित करके हास्केल 98 के एक्सटेंशन और वेरिएंट बनाने का स्पष्ट रूप से स्वागत किया।{{sfn|Peyton Jones|2003|loc=Preface}}
फरवरी 1999 में, हास्केल 98 भाषा मानक को मूल रूप से द हास्केल 98 रिपोर्ट के रूप में प्रकाशित किया गया था।{{sfn|Peyton Jones|2003|loc=Preface}} जनवरी 2003 में, हास्केल 98 भाषा और पुस्तकालय: संशोधित रिपोर्ट के रूप में एक संशोधित संस्करण प्रकाशित किया गया था।{{sfn|Peyton Jones|2003}} भाषा तेजी से विकसित हो रही है, ग्लासगो हास्केल कंपाइलर (जीएचसी) कार्यान्वयन वर्तमान वास्तविक मानक का प्रतिनिधित्व करता है।<ref name=HaskellWikiImpl>{{cite web|title=हास्केल विकी: कार्यान्वयन|url=http://www.haskell.org/haskellwiki/Implementations|access-date=18 December 2012}}</ref>
 


फरवरी 1999 में, हास्केल 98 भाषा मानक को मूल रूप से द हास्केल 98 रिपोर्ट के रूप में प्रकाशित किया गया था।{{sfn|Peyton Jones|2003|loc=Preface}} जनवरी 2003 में, हास्केल 98 भाषा और लाइब्रेरी: संशोधित रिपोर्ट के रूप में एक संशोधित संस्करण प्रकाशित किया गया था।{{sfn|Peyton Jones|2003}} भाषा तेजी से विकसित हो रही है, ग्लासगो हास्केल कंपाइलर (जीएचसी) कार्यान्वयन वर्तमान वास्तविक मानक का प्रतिनिधित्व करता है।<ref name="HaskellWikiImpl">{{cite web|title=हास्केल विकी: कार्यान्वयन|url=http://www.haskell.org/haskellwiki/Implementations|access-date=18 December 2012}}</ref>
=== हास्केल 2010 ===
=== हास्केल 2010 ===


2006 के प्रारंभ में, हास्केल 98 मानक के उत्तराधिकारी को परिभाषित करने की प्रक्रिया शुरू हुई, जिसे अनौपचारिक रूप से हास्केल प्राइम नाम दिया गया।<ref>{{cite web|url=https://prime.haskell.org/|title=हास्केल में आपका स्वागत है'|work=The Haskell' Wiki|access-date=11 February 2016|archive-date=20 February 2016|archive-url=https://web.archive.org/web/20160220103915/https://prime.haskell.org/|url-status=dead}}</ref> यह भाषा की परिभाषा को संशोधित करने के लिए एक सतत वृद्धिशील प्रक्रिया थी, जो प्रति वर्ष एक बार तक नये संशोधन के लिए तैयार करती थी। हास्केल 2010 नाम का पहला संशोधन नवंबर 2009 में घोषित किया गया था<ref name="2010ann"/>और जुलाई 2010 में इसे प्रकाशित किया गया था।
2006 के प्रारंभ में, हास्केल 98 मानक के उत्तराधिकारी को परिभाषित करने की प्रक्रिया शुरू हुई, जिसे अनौपचारिक रूप से हास्केल प्राइम नाम दिया गया।<ref>{{cite web|url=https://prime.haskell.org/|title=हास्केल में आपका स्वागत है'|work=The Haskell' Wiki|access-date=11 February 2016|archive-date=20 February 2016|archive-url=https://web.archive.org/web/20160220103915/https://prime.haskell.org/|url-status=dead}}</ref> यह भाषा की परिभाषा को संशोधित करने के लिए सतत वृद्धिशील प्रक्रिया थी, जो प्रति वर्ष नये संशोधन के लिए तैयार करती थी। हास्केल 2010 नाम का पहला संशोधन नवंबर 2009 में घोषित किया गया था<ref name="2010ann"/>और जुलाई 2010 में इसे प्रकाशित किया गया था।


हास्केल 2010 भाषा के लिए वृद्धिशील अद्यतन है, जिसमें अधिकतम अच्छी तरह से उपयोग की जाने वाली और गैर-विवादास्पद विशेषताएं सम्मलित हैं जो पहले संकलक-विशिष्ट झंडे के माध्यम से सक्षम थीं।
हास्केल 2010 भाषा के लिए वृद्धिशील अद्यतन है, जिसमें अधिकतम अच्छी तरह से उपयोग की जाने वाली और गैर-विवादास्पद विशेषताएं सम्मलित हैं जो पहले संकलक-विशिष्ट झंडे के माध्यम से सक्षम थीं।
* पदानुक्रमित मॉड्यूल के नामों को केवल ऐसे पहचानकर्ता के अतिरिक्त पूंजीकृत पहचानकर्ताओं के डॉट-पृथक अनुक्रमों को सम्मलित करने की अनुमति दी गई है। यह मॉड्यूल को पदानुक्रमित तरीके से नामित करने देता है (उदाहरण के लिए, <code>Data.List</code> के अतिरिक्त <code>List</code>), चूंकि तकनीकी रूप से मॉड्यूल अभी भी एक मोनोलिथिक नेमस्पेस में हैं। यह एक्सटेंशन हास्केल 98 के परिशिष्ट में निर्दिष्ट किया गया था और व्यवहार में सार्वभौमिक रूप से उपयोग किया गया था।
* पदानुक्रमित मॉड्यूल के नामों को केवल ऐसे पहचानकर्ता के अतिरिक्त पूंजीकृत पहचानकर्ताओं के डॉट-पृथक अनुक्रमों को सम्मलित करने की अनुमति दी गई है। यह मॉड्यूल को पदानुक्रमित तरीके से नामित करने देता है (उदाहरण के लिए, <code>Data.List</code> के अतिरिक्त <code>List</code>), चूंकि तकनीकी रूप से मॉड्यूल अभी भी मोनोलिथिक नेमस्पेस में हैं। यह एक्सटेंशन हास्केल 98 के परिशिष्ट में निर्दिष्ट किया गया था और व्यवहार में सार्वभौमिक रूप से उपयोग किया गया था।
* [[ विदेशी फ़ंक्शन इंटरफ़ेस ]] (FFI) अन्य प्रोग्रामिंग भाषाओं के लिए बाइंडिंग की अनुमति देता है। रिपोर्ट में केवल C (प्रोग्रामिंग भाषा) के लिए बाइंडिंग निर्दिष्ट हैं, लेकिन डिज़ाइन अन्य भाषा बाइंडिंग के लिए अनुमति देता है। इसका समर्थन करने के लिए, डेटा प्रकार की घोषणाओं में कोई कंस्ट्रक्टर नहीं होने की अनुमति दी गई थी, जो हास्केल में निर्मित नहीं किए जा सकने वाले विदेशी डेटा के लिए मजबूत गैर प्रकार को सक्षम करता है। यह एक्सटेंशन पहले हास्केल 98 रिपोर्ट के परिशिष्ट में निर्दिष्ट किया गया था और व्यापक रूप से उपयोग किया गया था।
* [[ विदेशी फ़ंक्शन इंटरफ़ेस ]] (FFI) अन्य प्रोग्रामिंग भाषाओं के लिए बाइंडिंग की अनुमति देता है। रिपोर्ट में केवल C (प्रोग्रामिंग भाषा) के लिए बाइंडिंग निर्दिष्ट हैं, लेकिन डिज़ाइन अन्य भाषा बाइंडिंग के लिए अनुमति देता है। इसका समर्थन करने के लिए, डेटा प्रकार की घोषणाओं में कोई कंस्ट्रक्टर नहीं होने की अनुमति दी गई थी, जो हास्केल में निर्मित नहीं किए जा सकने वाले विदेशी डेटा के लिए मजबूत गैर प्रकार को सक्षम करता है। यह एक्सटेंशन पहले हास्केल 98 रिपोर्ट के परिशिष्ट में निर्दिष्ट किया गया था और व्यापक रूप से उपयोग किया गया था।
* तथाकथित एन + के पैटर्न (फॉर्म की परिभाषाएं <code>fact (n+1) = (n+1) * fact n</code>) की अनुमति नहीं थी। इस [[ सिंटैक्टिक चीनी ]] में भ्रामक शब्दार्थ था, जिसमें कोड ऐसा दिखता था जैसे इसका उपयोग किया गया हो <code>(+)</code> ऑपरेटर, लेकिन वास्तव में कोड का उपयोग करने के लिए desugared <code>(-)</code> और <code>(>=)</code>.
* तथाकथित एन + के पैटर्न (फॉर्म की परिभाषाएं <code>fact (n+1) = (n+1) * fact n</code>) की अनुमति नहीं थी। इस [[ सिंटैक्टिक चीनी ]] में भ्रामक शब्दार्थ था, जिसमें कोड ऐसा दिखता था जैसे इसका उपयोग किया गया हो <code>(+)</code> ऑपरेटर, लेकिन वास्तव में कोड का उपयोग करने के लिए desugared <code>(-)</code> और <code>(>=)</code>.
* प्रकार के अनुमान के नियमों में ढील दी गई जिससे कि अधिक कार्यक्रमों को जाँचने की अनुमति मिल सके।
* प्रकार के अनुमान के नियमों में ढील दी गई जिससे कि अधिक कार्यक्रमों को जाँचने की अनुमति मिल सके।
* कुछ [[ सिंटेक्स (प्रोग्रामिंग भाषाएं) ]] विवाद (औपचारिक व्याकरण में परिवर्तन) तय किए गए थे: [[ पैटर्न गार्ड ]] जोड़े गए थे, जिससे गार्ड के भीतर पैटर्न मिलान हो सके; संचालन के आदेश का संकल्प सरल तरीके से निर्दिष्ट किया गया था जो वास्तविक अभ्यास को दर्शाता है; ऑपरेटरों और टिप्पणियों के भाषा के [[ शाब्दिक वाक्य रचना ]] की बातचीत में एक बढ़त का स्थिति संबोधित किया गया था, और अनपेक्षित सिंटैक्स त्रुटियों को खत्म करने के लिए do-notation और if-then-else की बातचीत को ट्वीक किया गया था।
* कुछ [[ सिंटेक्स (प्रोग्रामिंग भाषाएं) ]] विवाद (औपचारिक व्याकरण में परिवर्तन) तय किए गए थे: [[ पैटर्न गार्ड ]] जोड़े गए थे, जिससे गार्ड के भीतर पैटर्न का मेल हो सके, इसके संचालन के आदेश का संकल्प सरल विधियों से निर्दिष्ट किया गया था जो वास्तविकता में इसके अभ्यास को दर्शाता है, ऑपरेटरों और टिप्पणियों की भाषा के [[ शाब्दिक वाक्य रचना | शाब्दिक वाक्य की रचना]] के लिए की जाने वाली बातचीत में बढ़त बनाने की स्थिति को संबोधित किया गया था, और अनपेक्षित सिंटैक्स त्रुटियों को खत्म करने के लिए do-notation और if-then-else को ट्वीक किया गया था।
* <code>LANGUAGE</code> > [[ निर्देश (प्रोग्रामिंग) ]] निर्दिष्ट किया गया था। 2010 तक, भाषा के दर्जनों विस्तार व्यापक उपयोग में थे, और GHC (अन्य संकलकों के बीच) ने प्रदान किया <code>LANGUAGE</code> pragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने के लिए। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता है <code>Haskell2010</code> एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं।
* <code>LANGUAGE</code> E> [[ निर्देश (प्रोग्रामिंग) ]] निर्दिष्ट किया गया था। 2010 तक, भाषा के विस्तार होने के व्यापक उपयोग किए जाने लगे थे, और GHC (अन्य संकलकों के बीच) ने यह प्रदान किया कि <code>LANGUAGE</code> pragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने में उत्कृष्ट हो सके। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता होती है, <code>Haskell2010</code> एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए इसे प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं।


=== भविष्य के मानक ===
=== भविष्य के मानक ===
Line 71: Line 71:
हास्केल में मूल्यांकन, अन-नोन फ़ंक्शन, [[ पैटर्न मिलान | पैटर्न मिलान]], [[ सूची समझ ]], प्रकार वर्ग और प्रकार बहुरूपता सम्मलित हैं। यह [[ विशुद्ध रूप से कार्यात्मक भाषा ]] है, जिसका अर्थ है कि कार्यों का सामान्यतः कोई [[ साइड इफेक्ट (कंप्यूटर विज्ञान) ]] नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए ऑर्थोगोनल कंप्यूटर विज्ञान कार्यों के प्रकार के लिए एक अलग निर्माण सम्मलित है। शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है।
हास्केल में मूल्यांकन, अन-नोन फ़ंक्शन, [[ पैटर्न मिलान | पैटर्न मिलान]], [[ सूची समझ ]], प्रकार वर्ग और प्रकार बहुरूपता सम्मलित हैं। यह [[ विशुद्ध रूप से कार्यात्मक भाषा ]] है, जिसका अर्थ है कि कार्यों का सामान्यतः कोई [[ साइड इफेक्ट (कंप्यूटर विज्ञान) ]] नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए ऑर्थोगोनल कंप्यूटर विज्ञान कार्यों के प्रकार के लिए एक अलग निर्माण सम्मलित है। शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है।


हास्केल के पास [[ दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा ]] है, स्टैटिक टाइप स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में [[ बहुरूपता (कंप्यूटर विज्ञान) ]] को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,<ref name="wadler89">{{cite journal|last1=Wadler|first1=P.|first2=S. |last2=Blott|year=1989|title=तदर्थ बहुरूपता को कम तदर्थ कैसे बनाया जाए|journal=Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages|publisher=[[Association for Computing Machinery|ACM]]|pages=60–76|doi=10.1145/75277.75283|isbn=978-0-89791-294-5|s2cid=15327197}}</ref> लेकिन कई और उपयोग खोजने के बाद से।<ref name="hallgren01">{{cite journal|last=Hallgren|first=T.|date=January 2001|title=फंक्‍शनल डिपेंडेंसीज के साथ फन, या हास्केल में स्‍टेटिक संगणनाओं में वैल्‍यू के रूप में टाइप|journal=Proceedings of the Joint CS/CE Winter Meeting|location=Varberg, Sweden|url=http://www.cs.chalmers.se/~hallgren/Papers/wm01.html}}</ref> निर्माण जो साइड-इफेक्ट्स का प्रतिनिधित्व करता है, एक [[ मोनाड (कार्यात्मक प्रोग्रामिंग) ]] का उदाहरण है: सामान्य ढांचा जो विभिन्न संगणनाओं को मॉडल कर सकता है जैसे कि त्रुटि से निपटने, गैर-नियतात्मक एल्गोरिथ्म, [[ पदच्छेद ]] और [[ सॉफ्टवेयर लेनदेन स्मृति ]] उन्हें साधारण डेटाटाइप्स के रूप में परिभाषित किया गया है, लेकिन हास्केल उनके उपयोग के लिए कुछ सिंटैक्टिक चीनी प्रदान करता है।
हास्केल के पास [[ दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा ]] है, स्टैटिक टाइप स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में [[ बहुरूपता (कंप्यूटर विज्ञान) ]] को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,<ref name="wadler89">{{cite journal|last1=Wadler|first1=P.|first2=S. |last2=Blott|year=1989|title=तदर्थ बहुरूपता को कम तदर्थ कैसे बनाया जाए|journal=Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages|publisher=[[Association for Computing Machinery|ACM]]|pages=60–76|doi=10.1145/75277.75283|isbn=978-0-89791-294-5|s2cid=15327197}}</ref> लेकिन कई और उपयोग खोजने के बाद से।<ref name="hallgren01">{{cite journal|last=Hallgren|first=T.|date=January 2001|title=फंक्‍शनल डिपेंडेंसीज के साथ फन, या हास्केल में स्‍टेटिक संगणनाओं में वैल्‍यू के रूप में टाइप|journal=Proceedings of the Joint CS/CE Winter Meeting|location=Varberg, Sweden|url=http://www.cs.chalmers.se/~hallgren/Papers/wm01.html}}</ref> निर्माण जो साइड-इफेक्ट्स का प्रतिनिधित्व करता है, एक [[ मोनाड (कार्यात्मक प्रोग्रामिंग) ]] का उदाहरण है: सामान्य ढांचा जो विभिन्न संगणनाओं को मॉडल कर सकता है जैसे कि त्रुटि से निपटने, गैर-नियतात्मक एल्गोरिथ्म, [[ पदच्छेद ]] और [[ सॉफ्टवेयर लेनदेन स्मृति ]] उन्हें साधारण डेटाटाइप्स के रूप में परिभाषित किया गया है, लेकिन हास्केल उनके उपयोग के लिए कुछ सिंटैक्टिक सुगर प्रदान करता है।
 
हास्केल का एक खुला प्रकाशित विनिर्देश और कार्यान्वयन है,{{sfn|Peyton Jones|2003}}। इसका मुख्य कार्यान्वयन, ग्लासगो हास्केल [[ संकलक ]] (जीएचसी), एक इंटरप्रेटर (कंप्यूटिंग) और [[ मशीन कोड ]] | नेटिव-कोड कंपाइलर दोनों है जो अधिकांश प्लेटफॉर्म पर चलता है। जीएचसी अपने समृद्ध प्रकार की प्रणाली के लिए विख्यात है, जिसमें [[ सामान्यीकृत बीजगणितीय डेटा प्रकार ]] और प्रकार परिवारों जैसे हाल के नवाचारों को सम्मलित किया गया [[ कंप्यूटर भाषा बेंचमार्क गेम ]] कॉन्करेंसी (कंप्यूटर साइंस) और [[ समानांतर कंप्यूटिंग ]] के अपने उच्च-प्रदर्शन कार्यान्वयन पर भी प्रकाश डालता है।<ref name="shootout">[https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/haskell.html Computer Language Benchmarks Game]</ref>
एक सक्रिय, बढ़ता हुआ समुदाय भाषा के आसपास सम्मलित है, और ऑनलाइन पैकेज रिपॉजिटरी हैकेज में 5,400 से अधिक तृतीय-पक्ष ओपन-सोर्स लाइब्रेरी और टूल उपलब्ध हैं।<ref name="hackage-stats">{{cite web|url=http://hackage.haskell.org/cgi-bin/hackage-scripts/stats|archive-url=https://web.archive.org/web/20130503114836/http://hackage.haskell.org/cgi-bin/hackage-scripts/stats|archive-date=3 May 2013 |title=HackageDB आँकड़े|publisher=Hackage.haskell.org |access-date=26 June 2013}}</ref>


हास्केल का एक ओपन सोर्स प्रकाशित विनिर्देश और कार्यान्वयन भाषा हैं,{{sfn|Peyton Jones|2003}}। इसका मुख्य कार्यान्वयन, ग्लासगो हास्केल [[ संकलक ]] (जीएचसी), इंटरप्रेटर (कंप्यूटिंग) और [[ मशीन कोड ]] या नेटिव-कोड कंपाइलर दोनों में किया जाता है जो अधिकांश प्लेटफॉर्म पर रन होती हैं। जीएचसी अपने समृद्ध प्रकार की प्रणाली के लिए विख्यात है, जिसमें [[ सामान्यीकृत बीजगणितीय डेटा प्रकार ]] और प्रकार परिवारों जैसे हाल के नवाचारों को सम्मलित किया गया, [[ कंप्यूटर भाषा बेंचमार्क गेम ]] कॉन्करेंसी (कंप्यूटर साइंस) और [[ समानांतर कंप्यूटिंग ]] के अपने उच्च-प्रदर्शन कार्यान्वयन पर भी प्रकाश डालता है।<ref name="shootout">[https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/haskell.html Computer Language Benchmarks Game]</ref>


यह एक सक्रिय, बढ़ता हुआ समुदाय भाषा के आसपास सम्मलित है, और ऑनलाइन पैकेज रिपॉजिटरी हैकेज में 5,400 से अधिक तृतीय-पक्ष ओपन-सोर्स लाइब्रेरी और टूल उपलब्ध हैं।<ref name="hackage-stats">{{cite web|url=http://hackage.haskell.org/cgi-bin/hackage-scripts/stats|archive-url=https://web.archive.org/web/20130503114836/http://hackage.haskell.org/cgi-bin/hackage-scripts/stats|archive-date=3 May 2013 |title=HackageDB आँकड़े|publisher=Hackage.haskell.org |access-date=26 June 2013}}</ref>
== कोड उदाहरण ==
== कोड उदाहरण ==
{{See also|हास्केल की विशेषताएं # उदाहरण}}
{{See also|हास्केल की विशेषताएं # उदाहरण}}
एक Hello, World! हास्केल में कार्यक्रम (केवल अंतिम पंक्ति सख्ती से जरूरी है):<blockquote>module Main (main) where          -- not needed in interpreter, is the default in a module file
एक Hello, World! प्रोग्राम हास्केल में इस प्रकार लिखा जाएगा (केवल अंतिम पंक्ति सख्ती से जरूरी है):<blockquote>module Main (main) where          -- not needed in interpreter, is the default in a module file


main :: IO ()                                  -- the compiler can infer this type definition
main :: IO ()                                  -- the compiler can infer this type definition


main = putStrLn "Hello, World!"</blockquote>
main = putStrLn "Hello, World!"</blockquote>
 
हास्केल में [[ कारख़ाने का | फैक्टोरियल]] फ़ंक्शन, कुछ अलग तरीकों से परिभाषित किया गया है (पहली पंक्ति [[ हस्ताक्षर टाइप करें | हस्ताक्षर टाइप करें]] है, जो वैकल्पिक है और प्रत्येक कार्यान्वयन के लिए समान है):<blockquote>factorial :: (Integral a) => a -> a
 
हास्केल में [[ कारख़ाने का | कारख़ाने का]] फ़ंक्शन, कुछ अलग तरीकों से परिभाषित किया गया है (पहली पंक्ति [[ हस्ताक्षर टाइप करें | हस्ताक्षर टाइप करें]] है, जो वैकल्पिक है और प्रत्येक कार्यान्वयन के लिए समान है):<blockquote>factorial :: (Integral a) => a -> a


-- Using recursion (with the "ifthenelse" expression)
-- Using recursion (with the "ifthenelse" expression)
Line 120: Line 117:
-- Point-free style
-- Point-free style


factorial = foldr (*) 1 . enumFromTo 1</blockquote>जैसा कि पूर्णांक प्रकार में मनमाना-परिशुद्धता है, यह कोड मानों की गणना करेगा <code>factorial 100000</code> (एक 456,574-अंकों की संख्या), सटीकता की कोई हानि नहीं।
factorial = foldr (*) 1 . enum FromTo 1</blockquote>जैसा कि पूर्णांक प्रकार में मनमाना-परिशुद्धता है, यह कोड मानों की गणना करेगा <code>factorial 100000</code> (एक 456,574-अंकों की संख्या), इस प्रकार सटीकता की कोई हानि नहीं होती हैं।


त्वरित सॉर्ट ओवर सूचियों के समान एल्गोरिथ्म का कार्यान्वयन, जहां पहले तत्व को धुरी के रूप में लिया जाता है:<blockquote>-- Type annotation (optional, same for each implementation)
त्वरित सॉर्ट ओवर सूचियों के समान एल्गोरिथ्म का कार्यान्वयन, जहां पहले तत्व को धुरी के रूप में लिया जाता है:<blockquote>-- Type annotation (optional, same for each implementation)
Line 150: Line 147:


हास्केल 98 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में सम्मलित हैं:
हास्केल 98 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में सम्मलित हैं:
* ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और [[ एएनएसआई सी | एएनएसआई सी]]  के लिए दो [[ मध्यवर्ती भाषा | मध्यवर्ती भाषा]] ओं में से एक के माध्यम से संकलित करता है: [[ सी-- | C--]] , या हाल के संस्करणों में, [[ एलएलवीएम | एलएलवीएम]]  (पूर्व में निम्न स्तरीय वर्चुअल मशीन) बिटकोड।<ref>{{cite web|
* ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और [[ एएनएसआई सी | एएनएसआई सी]]  के लिए दो [[ मध्यवर्ती भाषा | मध्यवर्ती भाषाओं]] में से एक माध्यम से इसे संकलित करता है: [[ सी-- | C--]] , या हाल के संस्करणों में, [[ एलएलवीएम | एलएलवीएम]]  (पूर्व में निम्न स्तरीय वर्चुअल मशीन) बिटकोड का उपयोग किया जाता हैं।<ref>{{cite web|
url=https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM|
url=https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM|
title=The LLVM Backend|
title=The LLVM Backend|
Line 161: Line 158:
| date = 2010
| date = 2010
| publisher = ACM Press
| publisher = ACM Press
| book-title = Proceedings of ACM SIGPLAN Haskell Symposium 2010}}</ref> जीएचसी वास्तविक मानक हास्केल बोली बन गई है।<ref>C. Ryder and S. Thompson (2005). [http://kar.kent.ac.uk/14237/1/Tech_Chris.pdf "Porting HaRe to the GHC API"]</ref> पुस्तकालय हैं (उदाहरण के लिए, [[ ओपन | ओपन]] जीएल के लिए बाइंडिंग) जो केवल जीएचसी के साथ काम करते हैं। जीएचसी को [[ हास्केल मंच | हास्केल मंच]]  के साथ भी वितरित किया गया था।
| book-title = Proceedings of ACM SIGPLAN Haskell Symposium 2010}}</ref> जीएचसी का वास्तविक मानक हास्केल भाषा बन गई है।<ref>C. Ryder and S. Thompson (2005). [http://kar.kent.ac.uk/14237/1/Tech_Chris.pdf "Porting HaRe to the GHC API"]</ref> इसकी एक लाइब्रेरी हैं (उदाहरण के लिए, [[ ओपन | ओपन]] जीएल के लिए बाइंडिंग) जो केवल जीएचसी के साथ कार्य करती हैं। जीएचसी को [[ हास्केल मंच | हास्केल मंच]]  के साथ भी वितरित किया गया था।
* जेएचसी, जॉन मेचम द्वारा लिखित एक हास्केल संकलक, उत्पन्न कार्यक्रमों की गति और दक्षता पर जोर देता है और नए कार्यक्रम परिवर्तनों की खोज करता है।
* जेएचसी, जॉन मेचम द्वारा लिखित हास्केल संकलक, उत्पन्न कार्यक्रमों की गति और दक्षता पर जोर देता है और नए कार्यक्रम परिवर्तनों की खोज करता है।
** Ajhc Jhc का एक कांटा है।
** Ajhc Jhc का एक कांटा है।
* यूट्रेक्ट हास्केल कंपाइलर (यूएचसी) यूट्रेक्ट विश्वविद्यालय से हास्केल कार्यान्वयन है।<ref>[http://www.cs.uu.nl/wiki/UHC Utrecht Haskell Compiler]</ref> यह लगभग सभी हास्केल 98 सुविधाओं और कई प्रयोगात्मक एक्सटेंशन का समर्थन करता है। यह [[ विशेषता व्याकरण | विशेषता व्याकरण]]  का उपयोग करके कार्यान्वित किया जाता है और वर्तमान में अधिकतम उत्पन्न प्रकार प्रणालियों और भाषा एक्सटेंशन पर शोध के लिए उपयोग किया जाता है।
* यूट्रेक्ट हास्केल कंपाइलर (यूएचसी) यूट्रेक्ट विश्वविद्यालय से हास्केल कार्यान्वयन है।<ref>[http://www.cs.uu.nl/wiki/UHC Utrecht Haskell Compiler]</ref> यह लगभग सभी हास्केल 98 सुविधाओं और कई प्रयोगात्मक एक्सटेंशन का समर्थन करता है। यह [[ विशेषता व्याकरण | विशेषता व्याकरण]]  का उपयोग करके कार्यान्वित किया जाता है और वर्तमान में अधिकतम उत्पन्न प्रकार प्रणालियों और भाषा एक्सटेंशन पर शोध के लिए उपयोग किया जाता है।


कार्यान्वयन अब सक्रिय रूप से बनाए नहीं रखा जाता है इसमें सम्मलित हैं:
कार्यान्वयन अब सक्रिय रूप से बनाए नहीं रखा जाता है इसमें सम्मलित हैं:
* हास्केल यूजर का गोफर सिस्टम (हग्स (दुभाषिया)) एक [[ बाईटकोड ]] दुभाषिया है। यह एक बार जीएचसी कंपाइलर के साथ सबसे व्यापक रूप से उपयोग किए जाने वाले कार्यान्वयन में से एक था,{{sfn|Hudak|Hughes|Peyton Jones|Wadler|2007|pp=12–22}} लेकिन अब अधिकतम जीएचसीआई द्वारा प्रतिस्थापित कर दिया गया है। यह एक ग्राफिक्स लाइब्रेरी के साथ भी आता है।
* हास्केल यूजर का गोफर सिस्टम (हग्स (द्विभाषिया)) [[ बाईटकोड ]] द्विभाषिया है। यह एक बार जीएचसी कंपाइलर के साथ सबसे व्यापक रूप से उपयोग किए जाने वाले कार्यान्वयन में से एक था,{{sfn|Hudak|Hughes|Peyton Jones|Wadler|2007|pp=12–22}} लेकिन अब अधिकतम जीएचसीआई द्वारा प्रतिस्थापित कर दिया गया है। यह ग्राफिक्स लाइब्रेरी के साथ भी आता है।
* एचबीसी हास्केल 1.4 का समर्थन करने वाला एक प्रारंभिक कार्यान्वयन है। यह [[ लेनार्ट ऑगस्टसन ]] द्वारा [[ आलसी एमएल ]] पर आधारित और लागू किया गया था। यह कुछ समय के लिए सक्रिय रूप से विकसित नहीं हुआ है।
* एचबीसी हास्केल 1.4 का समर्थन करने वाला एक प्रारंभिक कार्यान्वयन है। यह [[ लेनार्ट ऑगस्टसन ]] द्वारा [[ आलसी एमएल | एमएल]] पर आधारित करके इसे लागू किया गया था। यह कुछ समय के लिए सक्रिय रूप से विकसित नहीं हुआ है।
* nhc98 मेमोरी उपयोग को कम करने पर ध्यान केंद्रित करने वाला एक बायटेकोड कंपाइलर है।
* nhc98 मेमोरी उपयोग को कम करने पर ध्यान केंद्रित करने वाला बायटेकोड कंपाइलर है।
** यॉर्क हास्केल कंपाइलर ([[ Yhc ]]) nhc98 का ​​एक कांटा था, जिसका लक्ष्य सरल, अधिक पोर्टेबल और कुशल होना और हास्केल ट्रेसर हैट के लिए समर्थन को एकीकृत करना था। इसमें एक [[ जावास्क्रिप्ट ]] बैकएंड भी था, जिससे उपयोगकर्ता [[ वेब ब्राउज़र ]] में हास्केल प्रोग्राम चला सकते थे।
** यॉर्क हास्केल कंपाइलर ([[ Yhc ]]) nhc98 का ​​एक कांटा था, जिसका लक्ष्य सरल, अधिक पोर्टेबल और कुशल होना और हास्केल ट्रेसर हैट के लिए समर्थन को एकीकृत करना था। इसमें एक [[ जावास्क्रिप्ट |जावास्क्रिप्ट]] बैकएंड भी था, जिससे उपयोगकर्ता [[ वेब ब्राउज़र ]] में हास्केल प्रोग्राम चला सकते थे।


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


== उल्लेखनीय अनुप्रयोग ==
== उल्लेखनीय अनुप्रयोग ==


* सबूत सहायक [[ Agda (प्रोग्रामिंग भाषा) ]] हास्केल में लिखा गया है।<ref>{{Citation|title=Agda 2|date=2021-10-15|url=https://github.com/agda/agda|publisher=Agda Github Community|access-date=2021-10-16}}</ref>
* सबूत सहायक [[ Agda (प्रोग्रामिंग भाषा) ]] हास्केल में लिखा गया है।<ref>{{Citation|title=Agda 2|date=2021-10-15|url=https://github.com/agda/agda|publisher=Agda Github Community|access-date=2021-10-16}}</ref>
*[[ कबाल (सॉफ्टवेयर) ]] [[ स्वचालन बनाएँ ]] और हास्केल पुस्तकालयों और कार्यक्रमों की पैकेजिंग के लिए एक उपकरण है।<ref>{{cite web|url=https://www.haskell.org/cabal/|title=हास्केल कैबल|access-date=8 April 2015}}</ref>
*[[ कबाल (सॉफ्टवेयर) ]] [[ स्वचालन बनाएँ ]] और हास्केल लाइब्रेरीों और कार्यक्रमों की पैकेजिंग के लिए एक उपकरण है।<ref>{{cite web|url=https://www.haskell.org/cabal/|title=हास्केल कैबल|access-date=8 April 2015}}</ref>
* [[ डार्क्स ]] एक [[ संशोधन नियंत्रण प्रणाली ]] है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण।
* [[ डार्क्स ]] [[ संशोधन नियंत्रण प्रणाली ]] है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण।
* ग्लासगो हास्केल कंपाइलर भी अधिकांशतः उन्नत कार्यात्मक प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है।
* ग्लासगो हास्केल कंपाइलर भी अधिकांशतः उन्नत कार्यात्मक प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है।
* [[ Git-अनुबंध ]] [[ गिट ]] संस्करण नियंत्रण के अनुसार (बड़ी) डेटा फ़ाइलों को प्रबंधित करने का एक उपकरण है। यह एक वितरित फ़ाइल तुल्यकालन प्रणाली (गिट-अनुबंध सहायक) भी प्रदान करता है।
* [[ Git-अनुबंध ]] [[ गिट ]] संस्करण नियंत्रण के अनुसार (बड़ी) डेटा फ़ाइलों को प्रबंधित करने का उपकरण है। यह वितरण फ़ाइल तुल्यकालन प्रणाली (गिट-अनुबंध सहायक) भी प्रदान करता है।
* [[ लिंस्पायर ]] लिनक्स ने सिस्टम टूल्स डेवलपमेंट के लिए हास्केल को चुना।<ref>{{cite web|url=http://urchin.earth.li/pipermail/debian-haskell/2006-May/000169.html|title=लिनस्पायर/फ्रीस्पायर कोर ओएस टीम और हास्केल|work=Debian Haskell mailing list|date=May 2006}}</ref>
* [[ लिंस्पायर ]] लिनक्स ने सिस्टम टूल्स डेवलपमेंट के लिए हास्केल को चुना।<ref>{{cite web|url=http://urchin.earth.li/pipermail/debian-haskell/2006-May/000169.html|title=लिनस्पायर/फ्रीस्पायर कोर ओएस टीम और हास्केल|work=Debian Haskell mailing list|date=May 2006}}</ref>
* [[ पंडोक ]] एक मार्कअप प्रारूप को दूसरे में बदलने का एक उपकरण है।
* [[ पंडोक ]] मार्कअप प्रारूप को दूसरे में बदलने का उपकरण है।
* [[ पग (प्रोग्रामिंग) ]] [[ राकू (प्रोग्रामिंग भाषा) ]] प्रोग्रामिंग भाषा (पूर्व में पर्ल 6) के लिए एक कंपाइलर और इंटरप्रेटर (कंप्यूटिंग) है।
* [[ पग (प्रोग्रामिंग) ]] [[ राकू (प्रोग्रामिंग भाषा) ]] प्रोग्रामिंग भाषा (पूर्व में पर्ल 6) के लिए कंपाइलर और इंटरप्रेटर (कंप्यूटिंग) है।
*[[ TidalCycles ]] लाइव कोडिंग संगीत पैटर्न के लिए एक डोमेन विशेष भाषा है, जो हास्केल में सन्निहित है।<ref>{{cite web|title=ज्वारीय चक्रों के साथ लाइव कोड {{!}} ज्वारीय चक्र|url=https://doc.tidalcycles.org/|access-date=2022-01-19|website=doc.tidalcycles.org|language=en}}</ref>
*[[ TidalCycles | टीइडल साइकिल्स]] लाइव कोडिंग संगीत के पैटर्न के लिए एक डोमेन बनाने वाली विशेष भाषा है, जो हास्केल में सन्निहित है।<ref>{{cite web|title=ज्वारीय चक्रों के साथ लाइव कोड {{!}} ज्वारीय चक्र|url=https://doc.tidalcycles.org/|access-date=2022-01-19|website=doc.tidalcycles.org|language=en}}</ref>
*[[ Xmonad ]] [[ एक्स विंडो सिस्टम ]] के लिए एक [[ खिड़की प्रबंधक ]] है, जो पूरी तरह हास्केल में लिखा गया है।<ref>xmonad.org</ref>
*[[ Xmonad |एक्स मोनेड]] [[ एक्स विंडो सिस्टम ]] के लिए [[ खिड़की प्रबंधक |खिड़की प्रबंधक]] है, जो पूरी तरह हास्केल में लिखा गया है।<ref>xmonad.org</ref>
 
 
=== उद्योग ===
=== उद्योग ===


Line 236: Line 231:
}}
}}
</ref> ओएस डेवलपर के लिए प्रोटोटाइप भाषा के रूप में हास्केल का उपयोग किया।<ref name="klein-sosp09"/>{{rp|p.2}} साथ ही, हास्केल कोड ने एक निष्पादन योग्य विनिर्देश को परिभाषित किया जिसके साथ प्रमेय-सिद्ध उपकरण द्वारा स्वचालित अनुवाद के लिए तर्क दिया गया।<ref name="klein-sosp09"/>{{rp|p.3}} हास्केल कोड इस प्रकार अंतिम सी (प्रोग्रामिंग भाषा) शोधन से पहले एक मध्यवर्ती प्रोटोटाइप के रूप में कार्य करता है।<ref name="klein-sosp09"/>{{rp|p.3}}
</ref> ओएस डेवलपर के लिए प्रोटोटाइप भाषा के रूप में हास्केल का उपयोग किया।<ref name="klein-sosp09"/>{{rp|p.2}} साथ ही, हास्केल कोड ने एक निष्पादन योग्य विनिर्देश को परिभाषित किया जिसके साथ प्रमेय-सिद्ध उपकरण द्वारा स्वचालित अनुवाद के लिए तर्क दिया गया।<ref name="klein-sosp09"/>{{rp|p.3}} हास्केल कोड इस प्रकार अंतिम सी (प्रोग्रामिंग भाषा) शोधन से पहले एक मध्यवर्ती प्रोटोटाइप के रूप में कार्य करता है।<ref name="klein-sosp09"/>{{rp|p.3}}
*[[ Target Corporation ]] store' आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।<ref>{{cite web | url=https://www.youtube.com/watch?v=0EgHNq6Pej8 | title=तिखोन जेल्विस: लक्ष्य पर हास्केल| website=[[YouTube]] }}</ref>
*[[ Target Corporation |टार्गेट कोर्पोरेशन स्टोर]] आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।<ref>{{cite web | url=https://www.youtube.com/watch?v=0EgHNq6Pej8 | title=तिखोन जेल्विस: लक्ष्य पर हास्केल| website=[[YouTube]] }}</ref>
 
 
=== वेब ===
=== वेब ===


हास्केल के लिए लिखे गए उल्लेखनीय वेब ढांचे में सम्मलित हैं:<ref>{{cite web|url=https://wiki.haskell.org/Web/Frameworks|title=वेब/फ्रेमवर्क - हास्केलविकि|website=wiki.haskell.org|access-date=17 September 2022}}</ref>
हास्केल के लिए लिखे गए उल्लेखनीय वेब फ्रेमवर्क में सम्मलित हैं:<ref>{{cite web|url=https://wiki.haskell.org/Web/Frameworks|title=वेब/फ्रेमवर्क - हास्केलविकि|website=wiki.haskell.org|access-date=17 September 2022}}</ref>
* [[ आईएचपी (वेब ​​फ्रेमवर्क) ]]
* [[ आईएचपी (वेब ​​फ्रेमवर्क) ]]
* [[ यसोड (वेब ​​फ्रेमवर्क) ]]
* [[ यसोड (वेब ​​फ्रेमवर्क) ]]
Line 249: Line 242:
== आलोचना ==
== आलोचना ==


2002 में जन-विलेम मेसेन और 2003 में [[ साइमन पीटन जोन्स ]] ने आलसी मूल्यांकन से जुड़ी समस्याओं पर चर्चा की, जबकि इसके लिए सैद्धांतिक उद्देश्यों को भी स्वीकार किया।<ref>Jan-Willem Maessen. ''Eager Haskell: Resource-bounded execution yields efficient iteration''. Proceedings of the 2002 [[Association for Computing Machinery]] (ACM) SIGPLAN workshop on Haskell.</ref><ref>{{deadlink|date=May 2022}}Simon Peyton Jones. [http://research.microsoft.com/~simonpj/papers/haskell-retrospective ''Wearing the hair shirt: a retrospective on Haskell'']. Invited talk at [[POPL]] 2003.</ref> बेहतर प्रदर्शन जैसे विशुद्ध रूप से व्यावहारिक विचारों के अतिरिक्त,<ref>{{cite web|url=http://www.haskell.org/pipermail/haskell/2006-June/018127.html|title=आलसी मूल्यांकन से उत्कृष्ट प्रदर्शन हो सकता है, जैसे कंप्यूटर भाषा बेंचमार्क गेम}}</ref> वे ध्यान देते हैं कि आलसी मूल्यांकन प्रोग्रामर के लिए अपने कोड के प्रदर्शन (विशेष रूप से इसके स्थान उपयोग) के बारे में तर्क करना अधिक कठिन बना देता है।
2002 में जन-विलेम मेसेन और 2003 में [[ साइमन पीटन जोन्स ]] ने आलसी मूल्यांकन से जुड़ी समस्याओं पर चर्चा की, जबकि इसके लिए सैद्धांतिक उद्देश्यों को भी स्वीकार किया।<ref>Jan-Willem Maessen. ''Eager Haskell: Resource-bounded execution yields efficient iteration''. Proceedings of the 2002 [[Association for Computing Machinery]] (ACM) SIGPLAN workshop on Haskell.</ref><ref>{{deadlink|date=May 2022}}Simon Peyton Jones. [http://research.microsoft.com/~simonpj/papers/haskell-retrospective ''Wearing the hair shirt: a retrospective on Haskell'']. Invited talk at [[POPL]] 2003.</ref> अच्छे प्रदर्शन जैसे विशुद्ध रूप से व्यावहारिक विचारों के अतिरिक्त,<ref>{{cite web|url=http://www.haskell.org/pipermail/haskell/2006-June/018127.html|title=आलसी मूल्यांकन से उत्कृष्ट प्रदर्शन हो सकता है, जैसे कंप्यूटर भाषा बेंचमार्क गेम}}</ref> वे ध्यान देते हैं कि आलसी मूल्यांकन प्रोग्रामर के लिए अपने कोड के प्रदर्शन (विशेष रूप से इसके स्थान उपयोग) के बारे में तर्क करना अधिक कठिन बना देता है।


2003 में बस्तियान हीरेन, डैन लीजेन, और अर्जन वैन आईजेजेंडोर्न ने भी हास्केल शिक्षार्थियों के लिए कुछ बाधाओं का अवलोकन किया: हास्केल की सूक्ष्म वाक्य रचना और परिष्कृत प्रकार की प्रणाली एक दोधारी तलवार है - अनुभवी प्रोग्रामरों द्वारा अत्यधिक सराहना की जाती है लेकिन प्रारंभिक लोगों के बीच निराशा का स्रोत भी है। चूंकि हास्केल की व्यापकता अधिकांशतः गुप्त त्रुटि संदेशों की ओर ले जाती है।<ref>{{cite journal|first1=Bastiaan |last1=Heeren |first2=Daan |last2=Leijen |first3=Arjan |last3=van IJzendoorn|year=2003|title=हीलियम, हास्केल सीखने के लिए|journal=Proceedings of the 2003 ACM SIGPLAN Workshop on Haskell|pages=62–71 |doi=10.1145/871895.871902 |isbn=1581137583 |s2cid=11986908 |url=http://www.cs.uu.nl/~bastiaan/heeren-helium.pdf}}</ref> इन्हें संबोधित करने के लिए, यूट्रेक्ट विश्वविद्यालय के शोधकर्ताओं ने [[ हीलियम (हास्केल) ]] नामक एक उन्नत दुभाषिया विकसित किया, जिसने कुछ हास्केल सुविधाओं की व्यापकता को सीमित करके और विशेष रूप से टाइप क्लास के लिए समर्थन को हटाकर त्रुटि संदेशों की उपयोगकर्ता-मित्रता में सुधार किया।
2003 में बस्तियान हीरेन, डैन लीजेन, और अर्जन वैन आईजेजेंडोर्न ने भी हास्केल शिक्षार्थियों के लिए कुछ बाधाओं का अवलोकन किया: हास्केल की सूक्ष्म वाक्य रचना और परिष्कृत प्रकार की प्रणाली है - अनुभवी प्रोग्रामरों द्वारा अत्यधिक सराहना की जाती है लेकिन प्रारंभिक लोगों के बीच निराशा का स्रोत भी है। चूंकि हास्केल की व्यापकता अधिकांशतः गुप्त त्रुटि संदेशों की ओर ले जाती है।<ref>{{cite journal|first1=Bastiaan |last1=Heeren |first2=Daan |last2=Leijen |first3=Arjan |last3=van IJzendoorn|year=2003|title=हीलियम, हास्केल सीखने के लिए|journal=Proceedings of the 2003 ACM SIGPLAN Workshop on Haskell|pages=62–71 |doi=10.1145/871895.871902 |isbn=1581137583 |s2cid=11986908 |url=http://www.cs.uu.nl/~bastiaan/heeren-helium.pdf}}</ref> इन्हें संबोधित करने के लिए, यूट्रेक्ट विश्वविद्यालय के शोधकर्ताओं ने [[ हीलियम (हास्केल) ]] नामक एक उन्नत द्विभाषिया विकसित किया, जिसने कुछ हास्केल सुविधाओं की व्यापकता को सीमित करके और विशेष रूप से टाइप क्लास के लिए समर्थन को हटाकर त्रुटि संदेशों की उपयोगकर्ता-मित्रता में सुधार किया।


बेन लिपमीयर ने शिष्य बनाया<ref>{{cite web|url=http://www.haskell.org/haskellwiki/DDC |title=डीडीसी - हास्केल विकि|publisher=Haskell.org |date=3 December 2010 |access-date=26 June 2013}}</ref> एक [[ मूल्यांकन रणनीति ]] के रूप में | आलसी मूल्यांकन के बारे में तर्क करने में हास्केल की कठिनाइयों को दूर करने के लिए और परिवर्तनीय सरणी जैसे पारंपरिक डेटा संरचनाओं का उपयोग करने में हास्केल की सख्त-दर-डिफ़ॉल्ट (स्पष्ट एनोटेशन द्वारा आलसी) बोली।<ref>Ben Lippmeier, [http://www.cse.unsw.edu.au/~benl/papers/thesis/lippmeier-impure-world.pdf Type Inference and Optimisation for an Impure World], [[Australian National University]] (2010) PhD thesis, chapter 1</ref> उनका तर्क है (पृष्ठ 20) कि विनाशकारी अद्यतन प्रोग्रामर को दो महत्वपूर्ण और शक्तिशाली उपकरण प्रदान करता है ... वस्तुओं के संग्रह के प्रबंधन के लिए कुशल सरणी-जैसी डेटा संरचनाओं का एक सेट, और ... सभी के लिए एक नया मूल्य प्रसारित करने की क्षमता प्रोग्रामर पर न्यूनतम बोझ वाले प्रोग्राम के हिस्से।
बेन लिपमीयर ने शिष्य बनाया<ref>{{cite web|url=http://www.haskell.org/haskellwiki/DDC |title=डीडीसी - हास्केल विकि|publisher=Haskell.org |date=3 December 2010 |access-date=26 June 2013}}</ref> एक [[ मूल्यांकन रणनीति ]] के रूप में मूल्यांकन के बारे में तर्क करने में हास्केल की कठिनाइयों को दूर करने के लिए और परिवर्तनीय सारणी जैसे पारंपरिक डेटा संरचनाओं का उपयोग करने में हास्केल की डिफ़ॉल्ट (स्पष्ट एनोटेशन) भाषा हैं।<ref>Ben Lippmeier, [http://www.cse.unsw.edu.au/~benl/papers/thesis/lippmeier-impure-world.pdf Type Inference and Optimisation for an Impure World], [[Australian National University]] (2010) PhD thesis, chapter 1</ref> उनका तर्क है (पृष्ठ 20) कि विनाशकारी अद्यतन प्रोग्रामर को दो महत्वपूर्ण और शक्तिशाली उपकरण प्रदान करता है, वस्तुओं के संग्रह के प्रबंधन के लिए कुशल सरणी-जैसी डेटा संरचनाओं का सेट, और सभी के लिए नये मूल्यों पर प्रसारित करने की क्षमता प्रोग्रामर पर न्यूनतम बोझ वाले प्रोग्राम के लिए उपयोगी हैं।


स्टैंडर्ड एमएल के लेखकों में से एक [[ रॉबर्ट हार्पर (कंप्यूटर वैज्ञानिक) ]] ने परिचयात्मक प्रोग्रामिंग सिखाने के लिए हास्केल का उपयोग नहीं करने के अपने कारण बताए हैं। इनमें गैर-सख्त मूल्यांकन के साथ संसाधनों के उपयोग के बारे में तर्क करने की कठिनाई है, आलसी मूल्यांकन डेटाटाइप्स और आगमनात्मक तर्क की परिभाषा को जटिल बनाता है,<ref>{{cite web|url=http://existentialtype.wordpress.com/2011/04/24/the-real-point-of-laziness/|title=आलस्य की बात|author=Robert Harper|date=25 April 2011 }} {{Closed access}}
स्टैंडर्ड एमएल के लेखकों में से एक [[ रॉबर्ट हार्पर (कंप्यूटर वैज्ञानिक) ]] ने परिचयात्मक प्रोग्रामिंग सिखाने के लिए हास्केल का उपयोग नहीं करने के अपने कारण बताए हैं। इनमें गैर-सख्त मूल्यांकन के साथ संसाधनों के उपयोग के बारे में तर्क करने की कठिनाई है, कम मूल्यांकन करने के लिए डेटाटाइप्स और आगमनात्मक तर्क की परिभाषा को जटिल बनाया जाता है,<ref>{{cite web|url=http://existentialtype.wordpress.com/2011/04/24/the-real-point-of-laziness/|title=आलस्य की बात|author=Robert Harper|date=25 April 2011 }} {{Closed access}}
</ref> और एमएल के मॉड्यूल सिस्टम की तुलना में हास्केल (पुरानी) वर्ग प्रणाली की हीनता।<ref>{{cite web|url=http://existentialtype.wordpress.com/2011/04/16/modules-matter-most/|author=Robert Harper|title=मॉड्यूल सबसे ज्यादा मायने रखते हैं।|date=16 April 2011 }} {{Closed access}}
</ref> और एमएल के मॉड्यूल सिस्टम की तुलना में हास्केल (प्राचीन) वर्ग प्रणाली के लिए उपयोग की जाती है।<ref>{{cite web|url=http://existentialtype.wordpress.com/2011/04/16/modules-matter-most/|author=Robert Harper|title=मॉड्यूल सबसे ज्यादा मायने रखते हैं।|date=16 April 2011 }} {{Closed access}}
</ref>
</ref>
हास्केल के निर्माण उपकरण, कैबल (सॉफ्टवेयर) की ऐतिहासिक रूप से एक ही पुस्तकालय के कई संस्करणों को खराब तरीके से संभालने के लिए आलोचना की गई है, एक समस्या जिसे कैबल हेल के रूप में जाना जाता है। इन आलोचनाओं के जवाब में स्टैकेज सर्वर और [[ स्टैक (हास्केल) ]] बिल्ड टूल बनाए गए थे।<ref>{{cite web|url=https://www.yesodweb.com/blog/2012/11/solving-cabal-hell|title=कैबल नर्क को सुलझाना|website=www.yesodweb.com|access-date=11 August 2019}}</ref> कैबल के पास अब बहुत अधिक परिष्कृत बिल्ड सिस्टम है, जो [[ निक्स पैकेज मैनेजर ]] से काफी प्रेरित है,<ref>{{cite web|url=http://blog.ezyang.com/2016/05/announcing-cabal-new-build-nix-style-local-builds/|title=कबाल न्यू-बिल्ड की घोषणा: निक्स-शैली स्थानीय बनाता है|access-date=1 October 2019}}</ref> जो संस्करण 3.0 के साथ डिफ़ॉल्ट बन गया।
 
हास्केल के निर्माण उपकरण, कैबल (सॉफ्टवेयर) की ऐतिहासिक रूप से इसकी लाइब्रेरी के कई संस्करणों को खराब तरीके से संभालने के लिए आलोचना की गई है, एक समस्या जिसे कैबल हेल के रूप में जाना जाता है। इन आलोचनाओं के जवाब में स्टैकेज सर्वर और [[ स्टैक (हास्केल) | स्टैक (हास्केल)]] बिल्ड टूल बनाए गए थे।<ref>{{cite web|url=https://www.yesodweb.com/blog/2012/11/solving-cabal-hell|title=कैबल नर्क को सुलझाना|website=www.yesodweb.com|access-date=11 August 2019}}</ref> कैबल के पास अब बहुत अधिक परिष्कृत बिल्ड सिस्टम है, जो [[ निक्स पैकेज मैनेजर | निक्स पैकेज मैनेजर]] से काफी प्रेरित है,<ref>{{cite web|url=http://blog.ezyang.com/2016/05/announcing-cabal-new-build-nix-style-local-builds/|title=कबाल न्यू-बिल्ड की घोषणा: निक्स-शैली स्थानीय बनाता है|access-date=1 October 2019}}</ref> जो संस्करण 3.0 के साथ डिफ़ॉल्ट बन गया।


== संबंधित भाषाएँ ==
== संबंधित भाषाएँ ==


[[ स्वच्छ (प्रोग्रामिंग भाषा) ]] हास्केल का करीबी, थोड़ा पुराना रिश्तेदार है। हास्केल से इसका सबसे बड़ा विचलन I/O और साइड-इफेक्ट्स के लिए मोनाड्स के अतिरिक्त [[ विशिष्टता प्रकार ]]ों के उपयोग में है।
[[ स्वच्छ (प्रोग्रामिंग भाषा) |क्लीन (प्रोग्रामिंग भाषा)]] हास्केल की करीबी, सह भाषा है। हास्केल से इसका सबसे बड़ा विचलन I/O और साइड-इफेक्ट्स के लिए मोनाड्स के अतिरिक्त [[ विशिष्टता प्रकार ]]के उपयोग में है।


हास्केल से प्रेरित भाषाओं की एक श्रृंखला, लेकिन विभिन्न प्रकार की प्रणालियों के साथ विकसित की गई है, जिनमें सम्मलित हैं:
हास्केल से प्रेरित भाषाओं की इस श्रृंखला को विभिन्न प्रकार की प्रणालियों के साथ विकसित किया गया है, जिनमें निम्नलिखित सम्मलित हैं:
* Agda (प्रमेय प्रमेय), निर्भर प्रकार के साथ एक कार्यात्मक भाषा।
* Agda (प्रमेय प्रमेय), निर्भर प्रकार के साथ कार्यात्मक भाषा।
* [[ केयेन (प्रोग्रामिंग भाषा) ]], [[ आश्रित प्रकार ]]ों के साथ।
* [[ केयेन (प्रोग्रामिंग भाषा) ]], [[ आश्रित प्रकार ]] के साथ।
* एल्म (प्रोग्रामिंग भाषा), वेब फ्रंट-एंड ऐप्स बनाने के लिए एक कार्यात्मक भाषा, उपयोगकर्ता-परिभाषित या उच्च-[[ प्रकार (प्रकार सिद्धांत) ]] प्रकार की कक्षाओं या उदाहरणों के लिए कोई समर्थन नहीं।
* एल्म (प्रोग्रामिंग भाषा), वेब फ्रंट-एंड ऐप्स बनाने के लिए एक कार्यात्मक भाषा, उपयोगकर्ता-परिभाषित या उच्च-[[ प्रकार (प्रकार सिद्धांत) ]] प्रकार की कक्षाओं या उदाहरणों के लिए कोई समर्थन नहीं हैं।
* एपिग्राम (प्रोग्रामिंग भाषा), प्रोग्राम के गुणों को साबित करने के लिए उपयुक्त आश्रित प्रकारों वाली एक कार्यात्मक भाषा।
* एपिग्राम (प्रोग्रामिंग भाषा), प्रोग्राम के गुणों को साबित करने के लिए उपयुक्त आश्रित प्रकारों वाली कार्यात्मक भाषा हैं।
* इदरीस (प्रोग्रामिंग भाषा), आश्रित प्रकार के साथ एक सामान्य प्रयोजन कार्यात्मक भाषा, [[ सेंट एंड्रयूज विश्वविद्यालय ]] में विकसित की गई।
* इदरीस (प्रोग्रामिंग भाषा), आश्रित प्रकार के साथ एक सामान्य प्रयोजन कार्यात्मक भाषा, [[ सेंट एंड्रयूज विश्वविद्यालय ]] में विकसित की गई।
* [[ प्योरस्क्रिप्ट ]] जावास्क्रिप्ट के लिए संकलित है।
* [[ प्योरस्क्रिप्ट ]] जावास्क्रिप्ट के लिए संकलित है।
* ओमेगा, सख्त और अधिक।{{Clarify|reason=What does "and more" mean?|date=June 2021}}
* ओमेगा, सख्त और अधिक।{{Clarify|reason=What does "and more" mean?|date=June 2021}}
अन्य संबंधित भाषाओं में सम्मलित हैं:
अन्य संबंधित भाषाओं में सम्मलित हैं:
* [[ करी (प्रोग्रामिंग भाषा) ]], हास्केल पर आधारित एक कार्यात्मक/तर्क प्रोग्रामिंग भाषा।
* [[ करी (प्रोग्रामिंग भाषा) ]], हास्केल पर आधारित कार्यात्मक/तर्क प्रोग्रामिंग भाषा हैं।


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


== सम्मेलन और कार्यशालाएं ==
== सम्मेलन और कार्यशालाएं ==
Line 286: Line 280:
* [[ कार्यात्मक प्रोग्रामिंग के वाणिज्यिक उपयोगकर्ता ]] (सीयूएफपी)
* [[ कार्यात्मक प्रोग्रामिंग के वाणिज्यिक उपयोगकर्ता ]] (सीयूएफपी)


2006 से शुरू होकर, संगठित हैकथॉन की एक श्रृंखला हुई है, एचएसी श्रृंखला, जिसका उद्देश्य प्रोग्रामिंग भाषा उपकरण और पुस्तकालयों में सुधार करना है।<ref>{{cite web |title=हैकथॉन - हास्केल विकि|url=http://haskell.org/haskellwiki/Hackathon}}</ref>
2006 से शुरू होकर, संगठित हैकथॉन की एक श्रृंखला हुई है, एचएसी श्रृंखला, जिसका उद्देश्य प्रोग्रामिंग भाषा उपकरण और लाइब्रेरीों में सुधार करना है।<ref>{{cite web |title=हैकथॉन - हास्केल विकि|url=http://haskell.org/haskellwiki/Hackathon}}</ref>
 
 
== संदर्भ ==
== संदर्भ ==
{{Reflist|30em}}
{{Reflist|30em}}
Line 335: Line 327:
*गैर नियतात्मक एल्गोरिथम
*गैर नियतात्मक एल्गोरिथम
*समवर्ती (कंप्यूटर विज्ञान)
*समवर्ती (कंप्यूटर विज्ञान)
*दुभाषिया (कंप्यूटिंग)
*द्विभाषिया (कंप्यूटिंग)
*मनमाना परिशुद्धता
*मनमाना परिशुद्धता
*उट्रेच विश्वविद्यालय
*उट्रेच विश्वविद्यालय
*आलिंगन (दुभाषिया)
*आलिंगन (द्विभाषिया)
*कार्डानो (ब्लॉकचेन प्लेटफॉर्म)
*कार्डानो (ब्लॉकचेन प्लेटफॉर्म)
*सिमेंटिक (सॉफ्टवेयर)
*सिमेंटिक (सॉफ्टवेयर)

Revision as of 11:35, 8 January 2023

Haskell
File:Logo of the Haskell programming language.svg
ParadigmPurely functional
द्वारा डिज़ाइन किया गयाLennart Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, Paul Hudak, John Hughes, Thomas Johnsson, Mark Jones, Simon Peyton Jones, John Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman, Philip Wadler
पहली प्रस्तुति1990; 36 years ago (1990)[1]
Stable release
Haskell 2010[2] / July 2010; 15 years ago (2010-07)
Preview release
Haskell 2020 announced[3]
टाइपिंग अनुशासनInferred, static, strong
ओएसCross-platform
फ़ाइल नाम एक्सटेंशनएस.hs, .lhs
वेबसाइटwww.haskell.org
Major implementations
GHC, Hugs, NHC, JHC, Yhc, UHC
Dialects
Gofer
Influenced by
Clean,[4] FP,[4] Gofer,[4] Hope and Hope+,[4] Id,[4] ISWIM,[4] KRC,[4] Lisp,[4] Miranda,[4] ML and Standard ML,[4] Orwell, SASL,[4] Scheme,[4] SISAL[4]
Influenced
Agda,[5] Bluespec,[6] C++11/Concepts,[7] C#/LINQ,[8][9][10][11] CAL,[citation needed] Cayenne,[8] Clean,[8] Clojure,[12] CoffeeScript,[13] Curry,[8] Elm, Epigram,[citation needed] Escher,[14] F#,[15] Hack,[16] Idris,[17] Isabelle,[8] Java/Generics,[8] LiveScript,[18] Mercury,[8] Ωmega, PureScript,[19] Python,[8][20] Raku,[21] Rust,[22] Scala,[8][23] Swift,[24] Visual Basic 9.0[8][9]

हास्केल (/ˈhæskəl/[25]) सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है। जिसका सामान्य-उद्देश्य, स्थिर टाइपिंग या स्थैतिक रूप से टाइप की गई, प्रकार अनुमान और आलसी मूल्यांकन के साथ विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग प्रोग्रामिंग भाषा में प्रोग्राम करना हैं।[26][27] शिक्षण, अनुसंधान और औद्योगिक अनुप्रयोगों के लिए इसे डिज़ाइन किया गया, हास्केल ने कई प्रोग्रामिंग भाषाओं की सुविधाओं को प्रदान किया है जैसे कि वर्ग टाइप करें , जो टाइप करने की सुरक्षा को सक्षम बनाता हैं। टाइप-सेफऑपरेटर ओवरलोडिंग , और मोनाड (फंक्शनल प्रोग्रामिंग) इनपुट/आउटपुट के लिए बहुत उपयोगी हैं। हास्केल का मुख्य कार्यान्वयन ग्लासगो हास्केल कंपाइलर (जीएचसी) है। इसका नाम तर्क विद्वानहास्केल करी के नाम पर रखा गया है।[1] हास्केल के सिमेंटिक्स (कंप्यूटर विज्ञान) को ऐतिहासिक रूप से मिरांडा (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा पर आधारित हैं, जो प्रारंभिक हास्केल वर्किंग ग्रुप के प्रयासों पर ध्यान केंद्रित करने के लिए कार्य करता था।[28] भाषा का अंतिम औपचारिक विनिर्देश जुलाई 2010 में बनाया गया था, जबकि जीएचसी का विकास भाषा के विस्तार के माध्यम से हास्केल का विस्तार करना जारी रखता है।

हास्केल का उपयोग अकादमिक और उद्योग में किया जाता है।[29][30][31] As of May 2021हास्केल ट्यूटोरियल के लिए गूगल खोजों द्वारा 28वीं सबसे लोकप्रिय प्रोग्रामिंग भाषा थी,[32] और गिट हब (GitHub) स्रोत कोड रिपॉजिटरी पर 1% से कम सक्रिय उपयोगकर्ता हैं।[33]

इतिहास

1985 में रिसर्च सॉफ्टवेयर लिमिटेड द्वारा मिरांडा (प्रोग्रामिंग भाषा) जारी करने के बाद आलसी कार्यात्मक भाषाओं में रुचि बढ़ी। 1987 तक, एक दर्जन से अधिक गैर-सख्त कार्य, विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषाएं सम्मलित थीं। मिरांडा सबसे व्यापक रूप से उपयोग किया गया था, लेकिन यह मालिकाना सॉफ्टवेयर था। पोर्टलैंड, ओरेगॉन में कार्यात्मक प्रोग्रामिंग भाषाएं और कंप्यूटर वास्तुकला (FPCA '87) पर सम्मेलन में, एक मजबूत सहमति थी कि ऐसी भाषाओं के लिए खुले मानक को परिभाषित करने के लिए समिति का गठन किया जाए। इस समिति का उद्देश्य कार्यात्मक-भाषा डिजाइन में भविष्य के शोध के आधार के रूप में कार्य करने के लिए सम्मलित कार्यात्मक भाषाओं को सरल भाषा में समावेशित करना था।[34]

हास्केल 1.0 से 1.4

हास्केल को एक समिति द्वारा विकसित किया गया था, जहां संभव हो वहां शेल्फ समाधानों को एक साथ लाने का प्रयास किया गया था।

इसमें कुछ प्रकार की कक्षाएं, जो इसकी सुरक्षा को सक्षम करती हैं। इन प्रकार के सुरक्षित ऑपरेटर ओवरलोडिंग, पहली बार फिलिप वाडलर और स्टीफन ब्लॉट द्वारा समानता से हर प्रकारों के तदर्थ संचालन और उस समय भाषाओं में अंकगणितीय अधिभार को संबोधित करने के लिए प्रस्तावित किया गया था।[35]

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

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

हास्केल (हास्केल 1.0) का पहला संस्करण 1990 में परिभाषित किया गया था।[1] समिति के प्रयासों के परिणामस्वरूप भाषा परिभाषाओं की एक श्रृंखला (1.0, 1.1, 1.2, 1.3, 1.4) हुई।

File:Base-classes.svg
जीएचसी 7.10 के अनुसार हास्केल प्रस्तावना में प्रकार वर्गों का पदानुक्रम। फोल्डेबल और ट्रैवर्सेबल (कुछ कार्यों के प्रकार के हस्ताक्षरों में संबंधित परिवर्तनों के साथ), और फंक्टर और मोनाड के बीच मध्यवर्ती के रूप में आवेदक को सम्मलित करना, हास्केल 2010 मानक से विचलन हैं।

हास्केल 98

1997 के अंत में, हास्केल 98 में श्रृंखला समाप्त हुई, जिसका उद्देश्य भाषा के स्थिर, न्यूनतम, पोर्टेबल संस्करण और शिक्षण के लिए एक मानक लाइब्रेरी (कंप्यूटर विज्ञान) और भविष्य के विस्तार के लिए आधार के रूप में निर्दिष्ट करना था। समिति ने प्रायोगिक सुविधाओं को जोड़कर और सम्मलित करके हास्केल 98 के एक्सटेंशन और वेरिएंट बनाने का स्पष्ट रूप से स्वागत किया।[34]

फरवरी 1999 में, हास्केल 98 भाषा मानक को मूल रूप से द हास्केल 98 रिपोर्ट के रूप में प्रकाशित किया गया था।[34] जनवरी 2003 में, हास्केल 98 भाषा और लाइब्रेरी: संशोधित रिपोर्ट के रूप में एक संशोधित संस्करण प्रकाशित किया गया था।[27] भाषा तेजी से विकसित हो रही है, ग्लासगो हास्केल कंपाइलर (जीएचसी) कार्यान्वयन वर्तमान वास्तविक मानक का प्रतिनिधित्व करता है।[37]

हास्केल 2010

2006 के प्रारंभ में, हास्केल 98 मानक के उत्तराधिकारी को परिभाषित करने की प्रक्रिया शुरू हुई, जिसे अनौपचारिक रूप से हास्केल प्राइम नाम दिया गया।[38] यह भाषा की परिभाषा को संशोधित करने के लिए सतत वृद्धिशील प्रक्रिया थी, जो प्रति वर्ष नये संशोधन के लिए तैयार करती थी। हास्केल 2010 नाम का पहला संशोधन नवंबर 2009 में घोषित किया गया था[2]और जुलाई 2010 में इसे प्रकाशित किया गया था।

हास्केल 2010 भाषा के लिए वृद्धिशील अद्यतन है, जिसमें अधिकतम अच्छी तरह से उपयोग की जाने वाली और गैर-विवादास्पद विशेषताएं सम्मलित हैं जो पहले संकलक-विशिष्ट झंडे के माध्यम से सक्षम थीं।

  • पदानुक्रमित मॉड्यूल के नामों को केवल ऐसे पहचानकर्ता के अतिरिक्त पूंजीकृत पहचानकर्ताओं के डॉट-पृथक अनुक्रमों को सम्मलित करने की अनुमति दी गई है। यह मॉड्यूल को पदानुक्रमित तरीके से नामित करने देता है (उदाहरण के लिए, Data.List के अतिरिक्त List), चूंकि तकनीकी रूप से मॉड्यूल अभी भी मोनोलिथिक नेमस्पेस में हैं। यह एक्सटेंशन हास्केल 98 के परिशिष्ट में निर्दिष्ट किया गया था और व्यवहार में सार्वभौमिक रूप से उपयोग किया गया था।
  • विदेशी फ़ंक्शन इंटरफ़ेस (FFI) अन्य प्रोग्रामिंग भाषाओं के लिए बाइंडिंग की अनुमति देता है। रिपोर्ट में केवल C (प्रोग्रामिंग भाषा) के लिए बाइंडिंग निर्दिष्ट हैं, लेकिन डिज़ाइन अन्य भाषा बाइंडिंग के लिए अनुमति देता है। इसका समर्थन करने के लिए, डेटा प्रकार की घोषणाओं में कोई कंस्ट्रक्टर नहीं होने की अनुमति दी गई थी, जो हास्केल में निर्मित नहीं किए जा सकने वाले विदेशी डेटा के लिए मजबूत गैर प्रकार को सक्षम करता है। यह एक्सटेंशन पहले हास्केल 98 रिपोर्ट के परिशिष्ट में निर्दिष्ट किया गया था और व्यापक रूप से उपयोग किया गया था।
  • तथाकथित एन + के पैटर्न (फॉर्म की परिभाषाएं fact (n+1) = (n+1) * fact n) की अनुमति नहीं थी। इस सिंटैक्टिक चीनी में भ्रामक शब्दार्थ था, जिसमें कोड ऐसा दिखता था जैसे इसका उपयोग किया गया हो (+) ऑपरेटर, लेकिन वास्तव में कोड का उपयोग करने के लिए desugared (-) और (>=).
  • प्रकार के अनुमान के नियमों में ढील दी गई जिससे कि अधिक कार्यक्रमों को जाँचने की अनुमति मिल सके।
  • कुछ सिंटेक्स (प्रोग्रामिंग भाषाएं) विवाद (औपचारिक व्याकरण में परिवर्तन) तय किए गए थे: पैटर्न गार्ड जोड़े गए थे, जिससे गार्ड के भीतर पैटर्न का मेल हो सके, इसके संचालन के आदेश का संकल्प सरल विधियों से निर्दिष्ट किया गया था जो वास्तविकता में इसके अभ्यास को दर्शाता है, ऑपरेटरों और टिप्पणियों की भाषा के शाब्दिक वाक्य की रचना के लिए की जाने वाली बातचीत में बढ़त बनाने की स्थिति को संबोधित किया गया था, और अनपेक्षित सिंटैक्स त्रुटियों को खत्म करने के लिए do-notation और if-then-else को ट्वीक किया गया था।
  • LANGUAGE E> निर्देश (प्रोग्रामिंग) निर्दिष्ट किया गया था। 2010 तक, भाषा के विस्तार होने के व्यापक उपयोग किए जाने लगे थे, और GHC (अन्य संकलकों के बीच) ने यह प्रदान किया कि LANGUAGE pragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने में उत्कृष्ट हो सके। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता होती है, Haskell2010 एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए इसे प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं।

भविष्य के मानक

2020 के लिए अगले औपचारिक विनिर्देश की योजना बनाई गई थी।[3]29 अक्टूबर 2021 को GHC संस्करण 9.2.1 के साथ, GHC2021 एक्सटेंशन जारी किया गया था। चूंकि यह एक औपचारिक भाषा युक्ति नहीं है, यह हास्केल 2010 में कई स्थिर, व्यापक रूप से उपयोग किए जाने वाले जीएचसी एक्सटेंशन को जोड़ती है।[39]

सुविधाएँ

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

हास्केल के पास दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा है, स्टैटिक टाइप स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में बहुरूपता (कंप्यूटर विज्ञान) को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,[40] लेकिन कई और उपयोग खोजने के बाद से।[41] निर्माण जो साइड-इफेक्ट्स का प्रतिनिधित्व करता है, एक मोनाड (कार्यात्मक प्रोग्रामिंग) का उदाहरण है: सामान्य ढांचा जो विभिन्न संगणनाओं को मॉडल कर सकता है जैसे कि त्रुटि से निपटने, गैर-नियतात्मक एल्गोरिथ्म, पदच्छेद और सॉफ्टवेयर लेनदेन स्मृति उन्हें साधारण डेटाटाइप्स के रूप में परिभाषित किया गया है, लेकिन हास्केल उनके उपयोग के लिए कुछ सिंटैक्टिक सुगर प्रदान करता है।

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

यह एक सक्रिय, बढ़ता हुआ समुदाय भाषा के आसपास सम्मलित है, और ऑनलाइन पैकेज रिपॉजिटरी हैकेज में 5,400 से अधिक तृतीय-पक्ष ओपन-सोर्स लाइब्रेरी और टूल उपलब्ध हैं।[43]

कोड उदाहरण

एक Hello, World! प्रोग्राम हास्केल में इस प्रकार लिखा जाएगा (केवल अंतिम पंक्ति सख्ती से जरूरी है):

module Main (main) where -- not needed in interpreter, is the default in a module file

main :: IO () -- the compiler can infer this type definition

main = putStrLn "Hello, World!"

हास्केल में फैक्टोरियल फ़ंक्शन, कुछ अलग तरीकों से परिभाषित किया गया है (पहली पंक्ति हस्ताक्षर टाइप करें है, जो वैकल्पिक है और प्रत्येक कार्यान्वयन के लिए समान है):

factorial :: (Integral a) => a -> a

-- Using recursion (with the "ifthenelse" expression)

factorial n = if n < 2

then 1

else n * factorial (n - 1)

-- Using recursion (with pattern matching)

factorial 0 = 1

factorial n = n * factorial (n - 1)

-- Using recursion (with guards)

factorial n

| n < 2 = 1

| otherwise = n * factorial (n - 1)

-- Using a list and the "product" function

factorial n = product [1..n]

-- Using fold (implements "product")

factorial n = foldl (*) 1 [1..n]

-- Point-free style

factorial = foldr (*) 1 . enum FromTo 1

जैसा कि पूर्णांक प्रकार में मनमाना-परिशुद्धता है, यह कोड मानों की गणना करेगा factorial 100000 (एक 456,574-अंकों की संख्या), इस प्रकार सटीकता की कोई हानि नहीं होती हैं। त्वरित सॉर्ट ओवर सूचियों के समान एल्गोरिथ्म का कार्यान्वयन, जहां पहले तत्व को धुरी के रूप में लिया जाता है:

-- Type annotation (optional, same for each implementation)

quickSort :: Ord a => [a] -> [a]

-- Using list comprehensions

quickSort [] = [] -- The empty list is already sorted

quickSort (x:xs) = quickSort [a | a <- xs, a < x] -- Sort the left part of the list

++ [x] ++ -- Insert pivot between two sorted parts

quickSort [a | a <- xs, a >= x] -- Sort the right part of the list

-- Using filter

quickSort [] = []

quickSort (x:xs) = quickSort (filter (<x) xs)

++ [x] ++

quickSort (filter (>=x) xs)

कार्यान्वयन

सभी सूचीबद्ध कार्यान्वयन ओपन सोर्स लाइसेंस के अंतर्गत वितरित किए जाते हैं।[44]

हास्केल 98 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में सम्मलित हैं:

  • ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और एएनएसआई सी के लिए दो मध्यवर्ती भाषाओं में से एक माध्यम से इसे संकलित करता है: C-- , या हाल के संस्करणों में, एलएलवीएम (पूर्व में निम्न स्तरीय वर्चुअल मशीन) बिटकोड का उपयोग किया जाता हैं।[45][46] जीएचसी का वास्तविक मानक हास्केल भाषा बन गई है।[47] इसकी एक लाइब्रेरी हैं (उदाहरण के लिए, ओपन जीएल के लिए बाइंडिंग) जो केवल जीएचसी के साथ कार्य करती हैं। जीएचसी को हास्केल मंच के साथ भी वितरित किया गया था।
  • जेएचसी, जॉन मेचम द्वारा लिखित हास्केल संकलक, उत्पन्न कार्यक्रमों की गति और दक्षता पर जोर देता है और नए कार्यक्रम परिवर्तनों की खोज करता है।
    • Ajhc Jhc का एक कांटा है।
  • यूट्रेक्ट हास्केल कंपाइलर (यूएचसी) यूट्रेक्ट विश्वविद्यालय से हास्केल कार्यान्वयन है।[48] यह लगभग सभी हास्केल 98 सुविधाओं और कई प्रयोगात्मक एक्सटेंशन का समर्थन करता है। यह विशेषता व्याकरण का उपयोग करके कार्यान्वित किया जाता है और वर्तमान में अधिकतम उत्पन्न प्रकार प्रणालियों और भाषा एक्सटेंशन पर शोध के लिए उपयोग किया जाता है।

कार्यान्वयन अब सक्रिय रूप से बनाए नहीं रखा जाता है इसमें सम्मलित हैं:

  • हास्केल यूजर का गोफर सिस्टम (हग्स (द्विभाषिया)) बाईटकोड द्विभाषिया है। यह एक बार जीएचसी कंपाइलर के साथ सबसे व्यापक रूप से उपयोग किए जाने वाले कार्यान्वयन में से एक था,[49] लेकिन अब अधिकतम जीएचसीआई द्वारा प्रतिस्थापित कर दिया गया है। यह ग्राफिक्स लाइब्रेरी के साथ भी आता है।
  • एचबीसी हास्केल 1.4 का समर्थन करने वाला एक प्रारंभिक कार्यान्वयन है। यह लेनार्ट ऑगस्टसन द्वारा एमएल पर आधारित करके इसे लागू किया गया था। यह कुछ समय के लिए सक्रिय रूप से विकसित नहीं हुआ है।
  • nhc98 मेमोरी उपयोग को कम करने पर ध्यान केंद्रित करने वाला बायटेकोड कंपाइलर है।
    • यॉर्क हास्केल कंपाइलर (Yhc ) nhc98 का ​​एक कांटा था, जिसका लक्ष्य सरल, अधिक पोर्टेबल और कुशल होना और हास्केल ट्रेसर हैट के लिए समर्थन को एकीकृत करना था। इसमें एक जावास्क्रिप्ट बैकएंड भी था, जिससे उपयोगकर्ता वेब ब्राउज़र में हास्केल प्रोग्राम चला सकते थे।

कार्यान्वयन पूरी तरह से हास्केल 98 के अनुरूप नहीं है, और इस प्रकार की हास्केल भाषा का उपयोग करते हुए इसमें सम्मलित हैं:

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

उल्लेखनीय अनुप्रयोग

उद्योग

  • ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, Bluespec, Inc. के उपकरण हास्केल में लागू किए गए हैं।
  • क्रिप्टोग्राफी एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, क्रिप्टोल हास्केल में लागू किया गया है।
  • फेसबुक अपने एंटी-स्पैम प्रोग्राम को लागू करता है[55] हास्केल में, अंतर्निहित डेटा एक्सेस लाइब्रेरी को खुला स्रोत सॉफ्टवेयर के रूप में बनाए रखना।[56]
  • हास्केल में कार्डानो (ब्लॉकचैन प्लेटफॉर्म) लागू किया गया है।[57]
  • GitHub ने सिमेंटिक (सॉफ़्टवेयर), हास्केल में अविश्वसनीय स्रोत कोड के विश्लेषण, अंतर और व्याख्या के लिए एक ओपन-सोर्स लाइब्रेरी लागू की।[58]
  • मानक चार्टर्ड की वित्तीय मॉडलिंग भाषा म्यू सिंटैक्टिक हास्केल सख्त रनटाइम पर चल रही है।[59]
  • seL4 , पहला औपचारिक तरीका microkernel ,[60] ओएस डेवलपर के लिए प्रोटोटाइप भाषा के रूप में हास्केल का उपयोग किया।[60]: p.2  साथ ही, हास्केल कोड ने एक निष्पादन योग्य विनिर्देश को परिभाषित किया जिसके साथ प्रमेय-सिद्ध उपकरण द्वारा स्वचालित अनुवाद के लिए तर्क दिया गया।[60]: p.3  हास्केल कोड इस प्रकार अंतिम सी (प्रोग्रामिंग भाषा) शोधन से पहले एक मध्यवर्ती प्रोटोटाइप के रूप में कार्य करता है।[60]: p.3 
  • टार्गेट कोर्पोरेशन स्टोर आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।[61]

वेब

हास्केल के लिए लिखे गए उल्लेखनीय वेब फ्रेमवर्क में सम्मलित हैं:[62]

आलोचना

2002 में जन-विलेम मेसेन और 2003 में साइमन पीटन जोन्स ने आलसी मूल्यांकन से जुड़ी समस्याओं पर चर्चा की, जबकि इसके लिए सैद्धांतिक उद्देश्यों को भी स्वीकार किया।[63][64] अच्छे प्रदर्शन जैसे विशुद्ध रूप से व्यावहारिक विचारों के अतिरिक्त,[65] वे ध्यान देते हैं कि आलसी मूल्यांकन प्रोग्रामर के लिए अपने कोड के प्रदर्शन (विशेष रूप से इसके स्थान उपयोग) के बारे में तर्क करना अधिक कठिन बना देता है।

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

बेन लिपमीयर ने शिष्य बनाया[67] एक मूल्यांकन रणनीति के रूप में मूल्यांकन के बारे में तर्क करने में हास्केल की कठिनाइयों को दूर करने के लिए और परिवर्तनीय सारणी जैसे पारंपरिक डेटा संरचनाओं का उपयोग करने में हास्केल की डिफ़ॉल्ट (स्पष्ट एनोटेशन) भाषा हैं।[68] उनका तर्क है (पृष्ठ 20) कि विनाशकारी अद्यतन प्रोग्रामर को दो महत्वपूर्ण और शक्तिशाली उपकरण प्रदान करता है, वस्तुओं के संग्रह के प्रबंधन के लिए कुशल सरणी-जैसी डेटा संरचनाओं का सेट, और सभी के लिए नये मूल्यों पर प्रसारित करने की क्षमता प्रोग्रामर पर न्यूनतम बोझ वाले प्रोग्राम के लिए उपयोगी हैं।

स्टैंडर्ड एमएल के लेखकों में से एक रॉबर्ट हार्पर (कंप्यूटर वैज्ञानिक) ने परिचयात्मक प्रोग्रामिंग सिखाने के लिए हास्केल का उपयोग नहीं करने के अपने कारण बताए हैं। इनमें गैर-सख्त मूल्यांकन के साथ संसाधनों के उपयोग के बारे में तर्क करने की कठिनाई है, कम मूल्यांकन करने के लिए डेटाटाइप्स और आगमनात्मक तर्क की परिभाषा को जटिल बनाया जाता है,[69] और एमएल के मॉड्यूल सिस्टम की तुलना में हास्केल (प्राचीन) वर्ग प्रणाली के लिए उपयोग की जाती है।[70]

हास्केल के निर्माण उपकरण, कैबल (सॉफ्टवेयर) की ऐतिहासिक रूप से इसकी लाइब्रेरी के कई संस्करणों को खराब तरीके से संभालने के लिए आलोचना की गई है, एक समस्या जिसे कैबल हेल के रूप में जाना जाता है। इन आलोचनाओं के जवाब में स्टैकेज सर्वर और स्टैक (हास्केल) बिल्ड टूल बनाए गए थे।[71] कैबल के पास अब बहुत अधिक परिष्कृत बिल्ड सिस्टम है, जो निक्स पैकेज मैनेजर से काफी प्रेरित है,[72] जो संस्करण 3.0 के साथ डिफ़ॉल्ट बन गया।

संबंधित भाषाएँ

क्लीन (प्रोग्रामिंग भाषा) हास्केल की करीबी, सह भाषा है। हास्केल से इसका सबसे बड़ा विचलन I/O और साइड-इफेक्ट्स के लिए मोनाड्स के अतिरिक्त विशिष्टता प्रकार के उपयोग में है।

हास्केल से प्रेरित भाषाओं की इस श्रृंखला को विभिन्न प्रकार की प्रणालियों के साथ विकसित किया गया है, जिनमें निम्नलिखित सम्मलित हैं:

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

अन्य संबंधित भाषाओं में सम्मलित हैं:

उल्लेखनीय हास्केल रूपों में सम्मलित हैं:

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

सम्मेलन और कार्यशालाएं

हास्केल समुदाय अनुसंधान और विकास गतिविधियों के लिए नियमित रूप से मिलता है। मुख्य कार्यक्रम हैं:

2006 से शुरू होकर, संगठित हैकथॉन की एक श्रृंखला हुई है, एचएसी श्रृंखला, जिसका उद्देश्य प्रोग्रामिंग भाषा उपकरण और लाइब्रेरीों में सुधार करना है।[73]

संदर्भ

  1. 1.0 1.1 1.2 Hudak et al. 2007.
  2. 2.0 2.1 Marlow, Simon (24 November 2009). "Announcing Haskell 2010". Haskell (Mailing list). Retrieved 12 March 2011.
  3. 3.0 3.1 Riedel, Herbert (28 April 2016). "ANN: Haskell Prime 2020 committee has formed". Haskell-prime (Mailing list). Retrieved 6 May 2017.
  4. 4.00 4.01 4.02 4.03 4.04 4.05 4.06 4.07 4.08 4.09 4.10 4.11 4.12 Peyton Jones 2003, p. xi
  5. Norell, Ulf (2008). "Dependently Typed Programming in Agda" (PDF). Gothenburg: Chalmers University. Retrieved 9 February 2012.
  6. Hudak et al. 2007, pp. 12–38, 43.
  7. Stroustrup, Bjarne; Sutton, Andrew (2011). "Design of Concept Libraries for C++" (PDF). Archived from the original (PDF) on 10 February 2012. {{cite journal}}: Cite journal requires |journal= (help)
  8. 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 Hudak et al. 2007, pp. 12-45–46.
  9. 9.0 9.1 Meijer, Erik (2006). "Confessions of a Used Programming Language Salesman: Getting the Masses Hooked on Haskell". Oopsla 2007. CiteSeerX 10.1.1.72.868.
  10. Meijer, Erik (1 October 2009). "C9 Lectures: Dr. Erik Meijer – Functional Programming Fundamentals, Chapter 1 of 13". Channel 9. Microsoft. Retrieved 9 February 2012.
  11. Drobi, Sadek (4 March 2009). "Erik Meijer on LINQ". InfoQ. QCon SF 2008: C4Media Inc. Retrieved 9 February 2012.{{cite news}}: CS1 maint: location (link)
  12. Hickey, Rich. "Clojure Bookshelf". Listmania!. Archived from the original on 3 October 2017. Retrieved 3 October 2017.
  13. Heller, Martin (18 October 2011). "Turn up your nose at Dart and smell the CoffeeScript". InfoWorld. Retrieved 2020-07-15.
  14. "Declarative programming in Escher" (PDF). Retrieved 7 October 2015.
  15. Syme, Don; Granicz, Adam; Cisternino, Antonio (2007). Expert F#. Apress. p. 2. F# also draws from Haskell particularly with regard to two advanced language features called sequence expressions and workflows.
  16. "Facebook Introduces 'Hack,' the Programming Language of the Future". WIRED. 20 March 2014.
  17. "Idris, a dependently typed language". Retrieved 26 October 2014.
  18. "LiveScript Inspiration". Retrieved 4 February 2014.
  19. Freeman, Phil (2016). "PureScript by Example". Leanpub. Retrieved 23 April 2017.
  20. Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Retrieved 9 February 2012.
  21. "Glossary of Terms and Jargon". Perl Foundation Perl 6 Wiki. The Perl Foundation. Archived from the original on 21 January 2012. Retrieved 9 February 2012.
  22. "The Rust Reference: Appendix: Influences". Retrieved 3 February 2016.
  23. Fogus, Michael (6 August 2010). "MartinOdersky take(5) toList". Send More Paramedics. Retrieved 9 February 2012.
  24. Lattner, Chris (3 June 2014). "Chris Lattner's Homepage". Chris Lattner. Retrieved 3 June 2014. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
  25. Chevalier, Tim (28 January 2008). "कोई मुझे "हास्केल" का उच्चारण बता सकता है?". Haskell-cafe (Mailing list). Retrieved 12 March 2011.
  26. Type inference originally using Hindley-Milner type inference
  27. 27.0 27.1 27.2 Peyton Jones 2003.
  28. Edward Kmett, Edward Kmett – Type Classes vs. the World
  29. Mossberg, Erik (2020-06-08), erkmos/haskell-companies, retrieved 2020-06-22
  30. O'Sullivan, Bryan; Goerzen, John; Stewart, Donald Bruce (15 November 2008). रियल वर्ल्ड हास्केल: कोड जिस पर आप विश्वास कर सकते हैं (in English). "O'Reilly Media, Inc.". pp. xxviii–xxxi. ISBN 978-0-596-55430-9.
  31. "प्रोडक्शन में हास्केल: रिस्कबुक". Serokell Software Development Company (in English). Retrieved 2021-09-07.
  32. "प्रोग्रामिंग लैंग्वेज इंडेक्स की PYPL लोकप्रियता". pypl.github.io (in English). May 2021. Archived from the original on 7 May 2021. Retrieved 16 May 2021.
  33. Frederickson, Ben. "गिटहब उपयोगकर्ताओं द्वारा रैंकिंग प्रोग्रामिंग भाषाएं". www.benfrederickson.com. Retrieved 6 September 2019.
  34. 34.0 34.1 34.2 Peyton Jones 2003, Preface.
  35. Wadler, Philip (October 1988). "तदर्थ बहुरूपता को कम तदर्थ कैसे बनाया जाए".
  36. Peyton Jones, Simon (2003). "हेयर शर्ट पहनना: हास्केल पर एक पूर्वव्यापी". Microsoft.
  37. "हास्केल विकी: कार्यान्वयन". Retrieved 18 December 2012.
  38. "हास्केल में आपका स्वागत है'". The Haskell' Wiki. Archived from the original on 20 February 2016. Retrieved 11 February 2016.
  39. GHC 2020 Team (29 October 2021) GHC 9.2.1 released
  40. Wadler, P.; Blott, S. (1989). "तदर्थ बहुरूपता को कम तदर्थ कैसे बनाया जाए". Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM: 60–76. doi:10.1145/75277.75283. ISBN 978-0-89791-294-5. S2CID 15327197.
  41. Hallgren, T. (January 2001). "फंक्‍शनल डिपेंडेंसीज के साथ फन, या हास्केल में स्‍टेटिक संगणनाओं में वैल्‍यू के रूप में टाइप". Proceedings of the Joint CS/CE Winter Meeting. Varberg, Sweden.
  42. Computer Language Benchmarks Game
  43. "HackageDB आँकड़े". Hackage.haskell.org. Archived from the original on 3 May 2013. Retrieved 26 June 2013.
  44. "Implementations" at the Haskell Wiki
  45. "The LLVM Backend". GHC Trac.
  46. Terei, David A.; Chakravarty, Manuel M. T. (2010). "जीएचसी के लिए एक एलएलवीएम बैकएंड". Proceedings of ACM SIGPLAN Haskell Symposium 2010. ACM Press.
  47. C. Ryder and S. Thompson (2005). "Porting HaRe to the GHC API"
  48. Utrecht Haskell Compiler
  49. Hudak et al. 2007, pp. 12–22.
  50. Agda 2, Agda Github Community, 2021-10-15, retrieved 2021-10-16
  51. "हास्केल कैबल". Retrieved 8 April 2015.
  52. "लिनस्पायर/फ्रीस्पायर कोर ओएस टीम और हास्केल". Debian Haskell mailing list. May 2006.
  53. "ज्वारीय चक्रों के साथ लाइव कोड | ज्वारीय चक्र". doc.tidalcycles.org (in English). Retrieved 2022-01-19.
  54. xmonad.org
  55. "हास्केल के साथ स्पैम से लड़ना". Facebook Code (in English). 26 June 2015. Retrieved 11 August 2019.
  56. "ओपन-सोर्सिंग Haxl, हास्केल के लिए एक पुस्तकालय". Facebook Code (in English). 10 June 2014. Retrieved 11 August 2019.
  57. "इनपुट-आउटपुट-एचके/कार्डानो-नोड: कार्डानो विकेंद्रीकृत ब्लॉकचैन में भाग लेने के लिए उपयोग किया जाने वाला मुख्य घटक". GitHub. Retrieved 2022-03-18.
  58. Parsing, analyzing, and comparing source code across many languages: github/semantic, GitHub, 7 June 2019, retrieved 7 June 2019
  59. "कार्यात्मक प्रोग्रामिंग कार्यशाला रिपोर्ट के वाणिज्यिक उपयोगकर्ता" (PDF). Retrieved 10 June 2022.
  60. 60.0 60.1 60.2 60.3 A formal proof of functional correctness was completed in 2009. Klein, Gerwin; Elphinstone, Kevin; Heiser, Gernot; Andronick, June; Cock, David; Derrin, Philip; Elkaduwe, Dhammika; Engelhardt, Kai; Kolanski, Rafal; Norrish, Michael; Sewell, Thomas; Tuch, Harvey; Winwood, Simon (October 2009). "seL4: Formal verification of an OS kernel" (PDF). 22nd ACM Symposium on Operating System Principles. Big Sky, MT, USA.
  61. "तिखोन जेल्विस: लक्ष्य पर हास्केल". YouTube.
  62. "वेब/फ्रेमवर्क - हास्केलविकि". wiki.haskell.org. Retrieved 17 September 2022.
  63. Jan-Willem Maessen. Eager Haskell: Resource-bounded execution yields efficient iteration. Proceedings of the 2002 Association for Computing Machinery (ACM) SIGPLAN workshop on Haskell.
  64. [dead link]Simon Peyton Jones. Wearing the hair shirt: a retrospective on Haskell. Invited talk at POPL 2003.
  65. "आलसी मूल्यांकन से उत्कृष्ट प्रदर्शन हो सकता है, जैसे कंप्यूटर भाषा बेंचमार्क गेम".
  66. Heeren, Bastiaan; Leijen, Daan; van IJzendoorn, Arjan (2003). "हीलियम, हास्केल सीखने के लिए" (PDF). Proceedings of the 2003 ACM SIGPLAN Workshop on Haskell: 62–71. doi:10.1145/871895.871902. ISBN 1581137583. S2CID 11986908.
  67. "डीडीसी - हास्केल विकि". Haskell.org. 3 December 2010. Retrieved 26 June 2013.
  68. Ben Lippmeier, Type Inference and Optimisation for an Impure World, Australian National University (2010) PhD thesis, chapter 1
  69. Robert Harper (25 April 2011). "आलस्य की बात". closed access publication – behind paywall
  70. Robert Harper (16 April 2011). "मॉड्यूल सबसे ज्यादा मायने रखते हैं।". closed access publication – behind paywall
  71. "कैबल नर्क को सुलझाना". www.yesodweb.com. Retrieved 11 August 2019.
  72. "कबाल न्यू-बिल्ड की घोषणा: निक्स-शैली स्थानीय बनाता है". Retrieved 1 October 2019.
  73. "हैकथॉन - हास्केल विकि".


ग्रन्थसूची

Reports
Textbooks
Tutorials
History


इस पेज में लापता आंतरिक लिंक की सूची

  • अनुमान टाइप करें
  • सामान्य प्रयोजन प्रोग्रामिंग भाषा
  • प्रकार की सुरक्षा
  • शब्दार्थ (कंप्यूटर विज्ञान)
  • गूगल खोज
  • खुला मानक
  • कार्यात्मक भाषाएँ
  • सख्त समारोह
  • कक्षाएं टाइप करें
  • सी (प्रोग्रामिंग भाषा)
  • कार्रवाई के आदेश
  • बहुरूपता टाइप करें
  • अनाम समारोह
  • गैर नियतात्मक एल्गोरिथम
  • समवर्ती (कंप्यूटर विज्ञान)
  • द्विभाषिया (कंप्यूटिंग)
  • मनमाना परिशुद्धता
  • उट्रेच विश्वविद्यालय
  • आलिंगन (द्विभाषिया)
  • कार्डानो (ब्लॉकचेन प्लेटफॉर्म)
  • सिमेंटिक (सॉफ्टवेयर)
  • स्टैंडर्ड चार्टर्ड
  • औपचारिक तरीके
  • वेब ढांचा
  • सेवक (वेब ​​फ्रेमवर्क)
  • एपिग्राम (प्रोग्रामिंग भाषा)
  • Agda (प्रमेय प्रमाण)
  • एल्म (प्रोग्रामिंग भाषा)
  • इदरीस (प्रोग्रामिंग भाषा)
  • ह्यूम (प्रोग्रामिंग भाषा)

बाहरी कड़ियाँ

श्रेणी:अकादमिक प्रोग्रामिंग भाषाएं श्रेणी: हास्केल कोड के उदाहरण के साथ लेख श्रेणी: शैक्षिक प्रोग्रामिंग भाषाएं श्रेणी: कार्यात्मक भाषाएं श्रेणी:साक्षर प्रोग्रामिंग श्रेणी: पैटर्न मिलान प्रोग्रामिंग भाषाएं श्रेणी: 1990 में बनाई गई प्रोग्रामिंग भाषा श्रेणी:सांख्यिकीय रूप से टाइप की गई प्रोग्रामिंग भाषाएं