हास्केल: Difference between revisions
No edit summary |
No edit summary |
||
| (4 intermediate revisions by 3 users not shown) | |||
| 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 में रिसर्च सॉफ्टवेयर लिमिटेड द्वारा मिरांडा (प्रोग्रामिंग भाषा) जारी करने के बाद | 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)' फ़ंक्शन के दृष्टिकोण थे, जो मूल्यों के बीच डेटा निर्भरता बनाता है, और अत्यधिक मेमोरी खपत से बचने के लिए इन भाषाओं में इसका उपयोग किया जाता है, रिफैक्टरिंग को और अधिक व्यावहारिक बनाने के लिए इसे सभी वर्गों से इसके मानक कार्यों में उपयोग किए जाने लगा था। | ||
| Line 47: | 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> | ||
| Line 56: | Line 56: | ||
हास्केल 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 को ट्वीक किया गया था। | ||
* <code>LANGUAGE</code> E> [[ निर्देश (प्रोग्रामिंग) ]] निर्दिष्ट किया गया था। 2010 तक, भाषा के विस्तार होने के व्यापक उपयोग किए जाने लगे थे, और | * <code>LANGUAGE</code> E> [[ निर्देश (प्रोग्रामिंग) |निर्देश (प्रोग्रामिंग)]] निर्दिष्ट किया गया था। 2010 तक, भाषा के विस्तार होने के व्यापक उपयोग किए जाने लगे थे, और जीएचसी (अन्य संकलकों के बीच) ने यह प्रदान किया कि <code>LANGUAGE</code> pragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने में उत्कृष्ट हो सके। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता होती है, <code>Haskell2010</code> एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए इसे प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं। | ||
=== भविष्य के मानक === | === भविष्य के मानक === | ||
2020 के लिए अगले औपचारिक विनिर्देश की योजना बनाई गई थी।<ref name="2020committee" />29 अक्टूबर 2021 को | 2020 के लिए अगले औपचारिक विनिर्देश की योजना बनाई गई थी।<ref name="2020committee" />29 अक्टूबर 2021 को जीएचसी संस्करण 9.2.1 के साथ, जीएचसी2021 एक्सटेंशन जारी किया गया था। चूंकि यह एक औपचारिक भाषा युक्ति नहीं है, यह हास्केल 2010 में कई स्थिर, व्यापक रूप से उपयोग किए जाने वाले जीएचसी एक्सटेंशन को जोड़ती है।<ref name= ghc9,2,1> GHC 2020 Team (29 October 2021) [https://downloads.haskell.org/~ghc/9.2.1/docs/html/users_guide/9.2.1-notes.html GHC 9.2.1] released</ref> | ||
== सुविधाएँ == | == सुविधाएँ == | ||
{{Main|हास्केल के गुण}} | {{Main|हास्केल के गुण}} | ||
{{See also|ग्लासगो हास्केल कंपाइलर हास्केल के लिए एक्सटेंशन}} | {{See also|ग्लासगो हास्केल कंपाइलर हास्केल के लिए एक्सटेंशन}} | ||
हास्केल में मूल्यांकन, अन-नोन फ़ंक्शन, [[ पैटर्न मिलान | पैटर्न मिलान]], [[ सूची समझ ]], प्रकार वर्ग और प्रकार बहुरूपता सम्मलित हैं। यह [[ विशुद्ध रूप से कार्यात्मक भाषा ]] है, जिसका अर्थ है कि कार्यों का सामान्यतः कोई [[ साइड इफेक्ट (कंप्यूटर विज्ञान) ]] नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए ऑर्थोगोनल कंप्यूटर विज्ञान कार्यों के प्रकार के लिए एक अलग निर्माण सम्मलित है। शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है। | हास्केल में मूल्यांकन, अन-नोन फ़ंक्शन, [[ पैटर्न मिलान |पैटर्न मिलान]], [[ सूची समझ |सूची समझ]] , प्रकार वर्ग और प्रकार बहुरूपता सम्मलित हैं। यह [[ विशुद्ध रूप से कार्यात्मक भाषा |विशुद्ध रूप से फंक्शनल भाषा]] है, जिसका अर्थ है कि कार्यों का सामान्यतः कोई [[ साइड इफेक्ट (कंप्यूटर विज्ञान) |साइड इफेक्ट (कंप्यूटर विज्ञान)]] नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए ऑर्थोगोनल कंप्यूटर विज्ञान कार्यों के प्रकार के लिए एक अलग निर्माण सम्मलित है। शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है। | ||
हास्केल के पास [[ दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा ]] है, स्टैटिक टाइप स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में [[ बहुरूपता (कंप्यूटर विज्ञान) ]] को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,<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> | हास्केल का एक ओपन सोर्स प्रकाशित विनिर्देश और कार्यान्वयन भाषा हैं,{{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> | यह एक सक्रिय, बढ़ता हुआ समुदाय भाषा के आसपास सम्मलित है, और ऑनलाइन पैकेज रिपॉजिटरी हैकेज में 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) | एक Hello, World! प्रोग्राम हास्केल में इस प्रकार लिखा जाएगा (केवल अंतिम पंक्ति सख्ती से जरूरी है):<blockquote>module Main (main) जहां द्विभाषिया स्थिति में इसकी आवश्यकता नहीं है, मॉड्यूल फ़ाइल में डिफ़ॉल्ट है | ||
main :: IO () | main :: IO () -- संकलक इस प्रकार की परिभाषा का अनुमान लगा सकता है | ||
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 103: | Line 103: | ||
factorial n | factorial n | ||
| n < 2 | | n < 2 = 1 | ||
| otherwise = n * factorial (n - 1) | | otherwise = n * factorial (n - 1) | ||
| Line 117: | Line 117: | ||
-- Point-free style | -- Point-free style | ||
factorial = foldr (*) 1 . enum FromTo 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) | ||
quickSort :: Ord a => [a] -> [a] | quickSort :: Ord a => [a] -> [a] | ||
| Line 125: | Line 123: | ||
-- Using list comprehensions | -- Using list comprehensions | ||
quickSort [] | quickSort [] = [] -- The empty list is already sorted | ||
quickSort (x:xs) = quickSort [a | a <- xs, a < x] | quickSort (x:xs) = quickSort [a | a <- xs, a < x] -- Sort the left part of the list | ||
++ [x] ++ | ++ [x] ++ -- Insert pivot between two sorted parts | ||
quickSort [a | a <- xs, a >= x] | quickSort [a | a <- xs, a >= x] -- Sort the right part of the list | ||
-- Using filter | -- Using filter | ||
quickSort [] | quickSort [] = [] | ||
quickSort (x:xs) = quickSort (filter (<x) xs) | quickSort (x:xs) = quickSort (filter (<x) xs) | ||
| Line 144: | Line 142: | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
सभी सूचीबद्ध कार्यान्वयन [[ ओपन सोर्स लाइसेंस ]] के अंतर्गत वितरित किए जाते हैं।<ref name="implementations">[http://www.haskell.org/haskellwiki/Implementations "Implementations"] at the Haskell Wiki</ref> | सभी सूचीबद्ध कार्यान्वयन [[ ओपन सोर्स लाइसेंस |ओपन सोर्स लाइसेंस]] के अंतर्गत वितरित किए जाते हैं।<ref name="implementations">[http://www.haskell.org/haskellwiki/Implementations "Implementations"] at the Haskell Wiki</ref> | ||
हास्केल 98 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में सम्मलित हैं: | हास्केल 98 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में सम्मलित हैं: | ||
* ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और [[ एएनएसआई सी | एएनएसआई सी]] | * ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और [[ एएनएसआई सी |एएनएसआई सी]] के लिए दो [[ मध्यवर्ती भाषा |मध्यवर्ती भाषाओं]] में से एक माध्यम से इसे संकलित करता है: [[ सी-- |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 158: | Line 156: | ||
| 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 का समर्थन करने वाला एक प्रारंभिक कार्यान्वयन है। यह [[ लेनार्ट ऑगस्टसन |लेनार्ट ऑगस्टसन]] द्वारा [[ आलसी एमएल |एमएल]] पर आधारित करके इसे लागू किया गया था। यह कुछ समय के लिए सक्रिय रूप से विकसित नहीं हुआ है। | ||
* | * एनएचसी98 मेमोरी उपयोग को कम करने पर ध्यान केंद्रित करने वाला बायटेकोड कंपाइलर है। | ||
** यॉर्क हास्केल कंपाइलर ([[ Yhc ]]) | ** यॉर्क हास्केल कंपाइलर ([[ Yhc ]]) एनएचसी98 का एक कांटा था, जिसका लक्ष्य सरल, अधिक पोर्टेबल और कुशल होना और हास्केल ट्रेसर हैट के लिए समर्थन को एकीकृत करना था। इसमें एक [[ जावास्क्रिप्ट |जावास्क्रिप्ट]] बैकएंड भी था, जिससे उपयोगकर्ता [[ वेब ब्राउज़र |वेब ब्राउज़र]] में हास्केल प्रोग्राम चला सकते थे। | ||
कार्यान्वयन पूरी तरह से हास्केल 98 के अनुरूप नहीं है, और इस प्रकार की हास्केल भाषा का उपयोग करते हुए इसमें सम्मलित हैं: | कार्यान्वयन पूरी तरह से हास्केल 98 के अनुरूप नहीं है, और इस प्रकार की हास्केल भाषा का उपयोग करते हुए इसमें सम्मलित हैं: | ||
* एटा और फ्रीज [[ जावा वर्चुअल मशीन ]] को लक्षित करने वाली हास्केल की बोलियां हैं। | * एटा और फ्रीज [[ जावा वर्चुअल मशीन |जावा वर्चुअल मशीन]] को लक्षित करने वाली हास्केल की बोलियां हैं। | ||
* गोफर ([[ सॉफ्टवेयर ]]) हास्केल की एक शैक्षिक भाषा थी, जिसमें मार्क जोन्स द्वारा विकसित कंस्ट्रक्टर क्लासेस नामक एक विशेषता थी। इसे हग्स (हास्केल यूजर के गोफर सिस्टम) द्वारा प्रतिस्थापित किया गया था। | * गोफर ([[ सॉफ्टवेयर ]]) हास्केल की एक शैक्षिक भाषा थी, जिसमें मार्क जोन्स द्वारा विकसित कंस्ट्रक्टर क्लासेस नामक एक विशेषता थी। इसे हग्स (हास्केल यूजर के गोफर सिस्टम) द्वारा प्रतिस्थापित किया गया था। | ||
* हीलियम, हास्केल की नई भाषा हैं। स्पष्ट त्रुटियों को संदेशों के माध्यम से सीखने को सरल बनाने पर ध्यान केंद्रित किया गया है। वर्तमान में इसमें टाइप क्लास के लिए पूर्ण समर्थन की कमी है, जो इसे कई हास्केल प्रोग्रामों के साथ असंगत बनाता है। | * हीलियम, हास्केल की नई भाषा हैं। स्पष्ट त्रुटियों को संदेशों के माध्यम से सीखने को सरल बनाने पर ध्यान केंद्रित किया गया है। वर्तमान में इसमें टाइप क्लास के लिए पूर्ण समर्थन की कमी है, जो इसे कई हास्केल प्रोग्रामों के साथ असंगत बनाता है। | ||
| Line 176: | Line 174: | ||
== उल्लेखनीय अनुप्रयोग == | == उल्लेखनीय अनुप्रयोग == | ||
* सबूत सहायक [[ 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 (प्रोग्रामिंग भाषा) |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-अनुबंध | 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 | टीइडल साइकिल्स]] | *[[ TidalCycles | टीइडल साइकिल्स]] लाइव कोडिंग संगीत के पैटर्न के लिए एक डोमेन बनाने वाली विशेष भाषा है, जो हास्केल में सन्निहित है।<ref>{{cite web|title=ज्वारीय चक्रों के साथ लाइव कोड {{!}} ज्वारीय चक्र|url=https://doc.tidalcycles.org/|access-date=2022-01-19|website=doc.tidalcycles.org|language=en}}</ref> | ||
*[[ Xmonad |एक्स मोनेड]] | *[[ Xmonad |एक्स मोनेड]] [[ एक्स विंडो सिस्टम |एक्स विंडो सिस्टम]] के लिए [[ खिड़की प्रबंधक |खिड़की प्रबंधक]] है, जो पूरी तरह हास्केल में लिखा गया है।<ref>xmonad.org</ref> | ||
=== उद्योग === | === उद्योग === | ||
*ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, ब्लूजपेक इंक के उपकरण हास्केल में लागू किए गए हैं। | *ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, ब्लूजपेक इंक के उपकरण हास्केल में लागू किए गए हैं। | ||
* [[ क्रिप्टोग्राफी ]] एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, [[ क्रिप्टोल ]] हास्केल में लागू किया गया है। | * [[ क्रिप्टोग्राफी | क्रिप्टोग्राफी]] एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, [[ क्रिप्टोल |क्रिप्टोल]] हास्केल में लागू किया गया है। | ||
* [[ फेसबुक ]] अपने एंटी-स्पैम प्रोग्राम को लागू करता है<ref>{{cite web|url=https://code.fb.com/security/fighting-spam-with-haskell/|title=हास्केल के साथ स्पैम से लड़ना|date=26 June 2015|website=Facebook Code|language=en-US|access-date=11 August 2019}}</ref> हास्केल में, अंतर्निहित डेटा एक्सेस लाइब्रेरी को [[ खुला स्रोत सॉफ्टवेयर ]] के रूप में बनाए रखना।<ref>{{cite web|url=https://code.fb.com/web/open-sourcing-haxl-a-library-for-haskell/|title=ओपन-सोर्सिंग Haxl, हास्केल के लिए एक पुस्तकालय|date=10 June 2014|website=Facebook Code|language=en-US|access-date=11 August 2019}}</ref> | * [[ फेसबुक | फेसबुक]] अपने एंटी-स्पैम प्रोग्राम को लागू करता है<ref>{{cite web|url=https://code.fb.com/security/fighting-spam-with-haskell/|title=हास्केल के साथ स्पैम से लड़ना|date=26 June 2015|website=Facebook Code|language=en-US|access-date=11 August 2019}}</ref> हास्केल में, अंतर्निहित डेटा एक्सेस लाइब्रेरी को [[ खुला स्रोत सॉफ्टवेयर |खुला स्रोत सॉफ्टवेयर]] के रूप में बनाए रखना।<ref>{{cite web|url=https://code.fb.com/web/open-sourcing-haxl-a-library-for-haskell/|title=ओपन-सोर्सिंग Haxl, हास्केल के लिए एक पुस्तकालय|date=10 June 2014|website=Facebook Code|language=en-US|access-date=11 August 2019}}</ref> | ||
* हास्केल में कार्डानो (ब्लॉकचैन प्लेटफॉर्म) लागू किया गया है।<ref>{{cite web|url=https://github.com/input-output-hk/cardano-node |title=इनपुट-आउटपुट-एचके/कार्डानो-नोड: कार्डानो विकेंद्रीकृत ब्लॉकचैन में भाग लेने के लिए उपयोग किया जाने वाला मुख्य घटक|publisher=GitHub |date= |accessdate=2022-03-18}}</ref> | * हास्केल में कार्डानो (ब्लॉकचैन प्लेटफॉर्म) लागू किया गया है।<ref>{{cite web|url=https://github.com/input-output-hk/cardano-node |title=इनपुट-आउटपुट-एचके/कार्डानो-नोड: कार्डानो विकेंद्रीकृत ब्लॉकचैन में भाग लेने के लिए उपयोग किया जाने वाला मुख्य घटक|publisher=GitHub |date= |accessdate=2022-03-18}}</ref> | ||
*GitHub ने सिमेंटिक (सॉफ़्टवेयर), हास्केल में अविश्वसनीय स्रोत कोड के विश्लेषण, अंतर और व्याख्या के लिए एक ओपन-सोर्स लाइब्रेरी लागू की।<ref>{{Citation|title=Parsing, analyzing, and comparing source code across many languages: github/semantic|date=7 June 2019|url=https://github.com/github/semantic|publisher=GitHub|access-date=7 June 2019}}</ref> | *GitHub ने सिमेंटिक (सॉफ़्टवेयर), हास्केल में अविश्वसनीय स्रोत कोड के विश्लेषण, अंतर और व्याख्या के लिए एक ओपन-सोर्स लाइब्रेरी लागू की।<ref>{{Citation|title=Parsing, analyzing, and comparing source code across many languages: github/semantic|date=7 June 2019|url=https://github.com/github/semantic|publisher=GitHub|access-date=7 June 2019}}</ref> | ||
*मानक चार्टर्ड की वित्तीय मॉडलिंग भाषा म्यू सिंटैक्टिक हास्केल सख्त रनटाइम पर चल रही है।<ref>{{cite web|url=https://anil.recoil.org/papers/2011-cufp-scribe-preprint.pdf |title=कार्यात्मक प्रोग्रामिंग कार्यशाला रिपोर्ट के वाणिज्यिक उपयोगकर्ता|access-date=10 June 2022}}</ref> | *मानक चार्टर्ड की वित्तीय मॉडलिंग भाषा म्यू सिंटैक्टिक हास्केल सख्त रनटाइम पर चल रही है।<ref>{{cite web|url=https://anil.recoil.org/papers/2011-cufp-scribe-preprint.pdf |title=कार्यात्मक प्रोग्रामिंग कार्यशाला रिपोर्ट के वाणिज्यिक उपयोगकर्ता|access-date=10 June 2022}}</ref> | ||
* [[ seL4 ]], पहला औपचारिक तरीका [[ microkernel ]],<ref name="klein-sosp09"> | * [[ seL4 ]], पहला औपचारिक तरीका [[ microkernel |microkernel]] ,<ref name="klein-sosp09"> | ||
A formal proof of functional correctness was completed in 2009. | A formal proof of functional correctness was completed in 2009. | ||
{{ cite conference | {{ cite conference | ||
| Line 231: | Line 229: | ||
}} | }} | ||
</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 |टार्गेट कोर्पोरेशन स्टोर]] | *[[ Target Corporation |टार्गेट कोर्पोरेशन स्टोर]] आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।<ref>{{cite web | url=https://www.youtube.com/watch?v=0EgHNq6Pej8 | title=तिखोन जेल्विस: लक्ष्य पर हास्केल| website=[[YouTube]] }}</ref> | ||
=== वेब === | === वेब === | ||
| Line 242: | Line 240: | ||
== आलोचना == | == आलोचना == | ||
2002 में जन-विलेम मेसेन और 2003 में [[ साइमन पीटन जोन्स ]] ने | 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 के साथ डिफ़ॉल्ट बन गया। | ||
== संबंधित भाषाएँ == | == संबंधित भाषाएँ == | ||
[[ स्वच्छ (प्रोग्रामिंग भाषा) |क्लीन (प्रोग्रामिंग भाषा)]] हास्केल की करीबी, सह भाषा है। हास्केल से इसका सबसे बड़ा विचलन | [[ स्वच्छ (प्रोग्रामिंग भाषा) |क्लीन (प्रोग्रामिंग भाषा)]] हास्केल की करीबी, सह भाषा है। हास्केल से इसका सबसे बड़ा विचलन इनपुट/आउटपुट और साइड-इफेक्ट्स के लिए मोनाड्स के अतिरिक्त [[ विशिष्टता प्रकार |विशिष्टता प्रकार]] के उपयोग में है। | ||
हास्केल से प्रेरित भाषाओं की इस श्रृंखला को विभिन्न प्रकार की प्रणालियों के साथ विकसित किया गया है, जिनमें निम्नलिखित सम्मलित हैं: | हास्केल से प्रेरित भाषाओं की इस श्रृंखला को विभिन्न प्रकार की प्रणालियों के साथ विकसित किया गया है, जिनमें निम्नलिखित सम्मलित हैं: | ||
* Agda (प्रमेय प्रमेय), निर्भर प्रकार के साथ | * Agda (प्रमेय प्रमेय), निर्भर प्रकार के साथ फंक्शनल भाषा। | ||
* [[ केयेन (प्रोग्रामिंग भाषा) ]], [[ आश्रित प्रकार ]] के साथ। | * [[ केयेन (प्रोग्रामिंग भाषा) ]], [[ आश्रित प्रकार |आश्रित प्रकार]] के साथ। | ||
* एल्म (प्रोग्रामिंग भाषा), वेब फ्रंट-एंड ऐप्स बनाने के लिए एक | * एल्म (प्रोग्रामिंग भाषा), वेब फ्रंट-एंड ऐप्स बनाने के लिए एक फंक्शनल भाषा, उपयोगकर्ता-परिभाषित या उच्च-[[ प्रकार (प्रकार सिद्धांत) | प्रकार (प्रकार सिद्धांत)]] प्रकार की कक्षाओं या उदाहरणों के लिए कोई समर्थन नहीं हैं। | ||
* एपिग्राम (प्रोग्रामिंग भाषा), प्रोग्राम के गुणों को साबित करने के लिए उपयुक्त आश्रित प्रकारों वाली | * एपिग्राम (प्रोग्रामिंग भाषा), प्रोग्राम के गुणों को साबित करने के लिए उपयुक्त आश्रित प्रकारों वाली फंक्शनल भाषा हैं। | ||
* इदरीस (प्रोग्रामिंग भाषा), आश्रित प्रकार के साथ एक सामान्य प्रयोजन | * इदरीस (प्रोग्रामिंग भाषा), आश्रित प्रकार के साथ एक सामान्य प्रयोजन फंक्शनल भाषा, [[ सेंट एंड्रयूज विश्वविद्यालय |सेंट एंड्रयूज विश्वविद्यालय]] में विकसित की गई। | ||
* [[ प्योरस्क्रिप्ट ]] जावास्क्रिप्ट के लिए संकलित है। | * [[ प्योरस्क्रिप्ट | प्योरस्क्रिप्ट]] जावास्क्रिप्ट के लिए संकलित है। | ||
* ओमेगा, सख्त और अधिक।{{Clarify|reason=What does "and more" mean?|date=June 2021}} | * ओमेगा, सख्त और अधिक।{{Clarify|reason=What does "and more" mean?|date=June 2021}} | ||
अन्य संबंधित भाषाओं में सम्मलित हैं: | अन्य संबंधित भाषाओं में सम्मलित हैं: | ||
* [[ करी (प्रोग्रामिंग भाषा) ]], हास्केल पर आधारित | * [[ करी (प्रोग्रामिंग भाषा) ]], हास्केल पर आधारित फंक्शनल/तर्क प्रोग्रामिंग भाषा हैं। | ||
उल्लेखनीय हास्केल रूपों में सम्मलित हैं: | उल्लेखनीय हास्केल रूपों में सम्मलित हैं: | ||
*[[ सामान्य प्रोग्रामिंग ]]जेनेरिक हास्केल, जेनरिक प्रोग्रामिंग के लिए टाइप सिस्टम सपोर्ट के साथ हास्केल का एक संस्करण हैं। | *[[ सामान्य प्रोग्रामिंग ]]जेनेरिक हास्केल, जेनरिक प्रोग्रामिंग के लिए टाइप सिस्टम सपोर्ट के साथ हास्केल का एक संस्करण हैं। | ||
* ह्यूम (प्रोग्रामिंग भाषा), एक तत्व मेलबॉक्स चैनलों के एक प्रकार के टुपल्स पर स्टेटलेस ऑटोमेटा के रूप में प्रक्रियाओं के आधार पर [[ अंतःस्थापित प्रणाली ]] के लिए सख्त | * ह्यूम (प्रोग्रामिंग भाषा), एक तत्व मेलबॉक्स चैनलों के एक प्रकार के टुपल्स पर स्टेटलेस ऑटोमेटा के रूप में प्रक्रियाओं के आधार पर [[ अंतःस्थापित प्रणाली |अंतःस्थापित प्रणाली]] के लिए सख्त फंक्शनल भाषा, जहां इस स्थिति को मेलबॉक्स में फीडबैक द्वारा रखा जाता है, और आउटपुट से चैनलों के रूप में मैपिंग विवरण हास्केल जैसी अभिव्यक्ति भाषा और वाक्य-विन्यास के साथ बॉक्स वायरिंग की जाती हैं। | ||
== सम्मेलन और कार्यशालाएं == | == सम्मेलन और कार्यशालाएं == | ||
हास्केल समुदाय अनुसंधान और विकास गतिविधियों के लिए नियमित रूप से मिलता है। मुख्य कार्यक्रम हैं: | हास्केल समुदाय अनुसंधान और विकास गतिविधियों के लिए नियमित रूप से मिलता है। मुख्य कार्यक्रम हैं: | ||
* [[ कार्यात्मक प्रोग्रामिंग पर अंतर्राष्ट्रीय सम्मेलन ]] (आईसीएफपी) | * [[ कार्यात्मक प्रोग्रामिंग पर अंतर्राष्ट्रीय सम्मेलन | फंक्शनल प्रोग्रामिंग पर अंतर्राष्ट्रीय सम्मेलन]] (आईसीएफपी) | ||
* [[ हास्केल संगोष्ठी ]] (पूर्व में हास्केल कार्यशाला) | * [[ हास्केल संगोष्ठी | हास्केल संगोष्ठी]] (पूर्व में हास्केल कार्यशाला) | ||
* हास्केल कार्यान्वयन कार्यशाला | * हास्केल कार्यान्वयन कार्यशाला | ||
* [[ कार्यात्मक प्रोग्रामिंग के वाणिज्यिक उपयोगकर्ता ]] (सीयूएफपी) | * [[ कार्यात्मक प्रोग्रामिंग के वाणिज्यिक उपयोगकर्ता | फंक्शनल प्रोग्रामिंग के वाणिज्यिक उपयोगकर्ता]] (सीयूएफपी) | ||
2006 से शुरू होकर, संगठित हैकथॉन की एक श्रृंखला हुई है, एचएसी श्रृंखला, जिसका उद्देश्य प्रोग्रामिंग भाषा उपकरण और लाइब्रेरीों में सुधार करना है।<ref>{{cite web |title=हैकथॉन - हास्केल विकि|url=http://haskell.org/haskellwiki/Hackathon}}</ref> | 2006 से शुरू होकर, संगठित हैकथॉन की एक श्रृंखला हुई है, एचएसी श्रृंखला, जिसका उद्देश्य प्रोग्रामिंग भाषा उपकरण और लाइब्रेरीों में सुधार करना है।<ref>{{cite web |title=हैकथॉन - हास्केल विकि|url=http://haskell.org/haskellwiki/Hackathon}}</ref> | ||
| Line 315: | Line 313: | ||
*[https://discu.eu/weekly/haskell/ Haskell Weekly] | *[https://discu.eu/weekly/haskell/ Haskell Weekly] | ||
{{Programming languages}} | {{Programming languages}} | ||
[[Category: | |||
[[Category:All articles containing potentially dated statements]] | |||
[[Category:All articles with dead external links]] | |||
[[Category:All articles with unsourced statements]] | |||
[[Category:Articles containing potentially dated statements from May 2021]] | |||
[[Category:Articles with dead external links from May 2022]] | |||
[[Category:Articles with hatnote templates targeting a nonexistent page]] | |||
[[Category:Articles with invalid date parameter in template]] | |||
[[Category:Articles with unsourced statements from February 2012]] | |||
[[Category:CS1 English-language sources (en)]] | |||
[[Category:CS1 errors]] | |||
[[Category:CS1 maint]] | |||
[[Category:Citation Style 1 templates|M]] | |||
[[Category:Collapse templates]] | |||
[[Category:Created On 02/01/2023]] | [[Category:Created On 02/01/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists]] | |||
[[Category:Official website missing URL]] | |||
[[Category:Pages with broken file links]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Sidebars with styles needing conversion]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates based on the Citation/CS1 Lua module]] | |||
[[Category:Templates generating COinS|Cite magazine]] | |||
[[Category:Templates generating microformats]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that are not mobile friendly]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Wikipedia articles needing clarification from June 2021]] | |||
[[Category:Wikipedia fully protected templates|Cite magazine]] | |||
[[Category:Wikipedia metatemplates]] | |||
Latest revision as of 10:41, 24 January 2023
हास्केल (/ˈhæskəl/[25]) सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है। जिसका सामान्य-उद्देश्य, स्थिर टाइपिंग या स्थैतिक रूप से टाइप की गई, प्रकार अनुमान और मूल्यांकन के साथ विशुद्ध रूप से फंक्शनल प्रोग्रामिंग प्रोग्रामिंग भाषा में प्रोग्राम करना हैं।[26][27] शिक्षण, अनुसंधान और औद्योगिक अनुप्रयोगों के लिए इसे डिज़ाइन किया गया, हास्केल ने कई प्रोग्रामिंग भाषाओं की सुविधाओं को प्रदान किया है जैसे कि वर्ग टाइप करें , जो टाइप करने की सुरक्षा को सक्षम बनाता हैं। टाइप-सेफऑपरेटर ओवरलोडिंग , और मोनाड (फंक्शनल प्रोग्रामिंग) इनपुट/आउटपुट के लिए बहुत उपयोगी हैं। हास्केल का मुख्य कार्यान्वयन ग्लासगो हास्केल कंपाइलर (जीएचसी) है। इसका नाम तर्क विद्वान हास्केल करी के नाम पर रखा गया है।[1] हास्केल के सिमेंटिक्स (कंप्यूटर विज्ञान) को ऐतिहासिक रूप से मिरांडा (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा पर आधारित हैं, जो प्रारंभिक हास्केल वर्किंग ग्रुप के प्रयासों पर ध्यान केंद्रित करने के लिए कार्य करता था।[28] भाषा का अंतिम औपचारिक विनिर्देश जुलाई 2010 में बनाया गया था, जबकि जीएचसी का विकास भाषा के विस्तार के माध्यम से हास्केल का विस्तार करना जारी रखता है।
हास्केल का उपयोग अकादमिक और उद्योग में किया जाता है।[29][30][31] As of May 2021[update] हास्केल ट्यूटोरियल के लिए गूगल खोजों द्वारा 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) हुई।
हास्केल 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 को ट्वीक किया गया था।
LANGUAGEE> निर्देश (प्रोग्रामिंग) निर्दिष्ट किया गया था। 2010 तक, भाषा के विस्तार होने के व्यापक उपयोग किए जाने लगे थे, और जीएचसी (अन्य संकलकों के बीच) ने यह प्रदान किया किLANGUAGEpragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने में उत्कृष्ट हो सके। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता होती है,Haskell2010एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए इसे प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं।
भविष्य के मानक
2020 के लिए अगले औपचारिक विनिर्देश की योजना बनाई गई थी।[3]29 अक्टूबर 2021 को जीएचसी संस्करण 9.2.1 के साथ, जीएचसी2021 एक्सटेंशन जारी किया गया था। चूंकि यह एक औपचारिक भाषा युक्ति नहीं है, यह हास्केल 2010 में कई स्थिर, व्यापक रूप से उपयोग किए जाने वाले जीएचसी एक्सटेंशन को जोड़ती है।[39]
सुविधाएँ
हास्केल में मूल्यांकन, अन-नोन फ़ंक्शन, पैटर्न मिलान, सूची समझ , प्रकार वर्ग और प्रकार बहुरूपता सम्मलित हैं। यह विशुद्ध रूप से फंक्शनल भाषा है, जिसका अर्थ है कि कार्यों का सामान्यतः कोई साइड इफेक्ट (कंप्यूटर विज्ञान) नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए ऑर्थोगोनल कंप्यूटर विज्ञान कार्यों के प्रकार के लिए एक अलग निर्माण सम्मलित है। शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है।
हास्केल के पास दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा है, स्टैटिक टाइप स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में बहुरूपता (कंप्यूटर विज्ञान) को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,[40] लेकिन कई और उपयोग खोजने के बाद से।[41] निर्माण जो साइड-इफेक्ट्स का प्रतिनिधित्व करता है, एक मोनाड (फंक्शनल प्रोग्रामिंग) का उदाहरण है: सामान्य ढांचा जो विभिन्न संगणनाओं को मॉडल कर सकता है जैसे कि त्रुटि से निपटने, गैर-नियतात्मक एल्गोरिथ्म, पदच्छेद और सॉफ्टवेयर लेनदेन स्मृति उन्हें साधारण डेटाटाइप्स के रूप में परिभाषित किया गया है, लेकिन हास्केल उनके उपयोग के लिए कुछ सिंटैक्टिक सुगर प्रदान करता है।
हास्केल का एक ओपन सोर्स प्रकाशित विनिर्देश और कार्यान्वयन भाषा हैं,[27]। इसका मुख्य कार्यान्वयन, ग्लासगो हास्केल संकलक (जीएचसी), इंटरप्रेटर (कंप्यूटिंग) और मशीन कोड या नेटिव-कोड कंपाइलर दोनों में किया जाता है जो अधिकांश प्लेटफॉर्म पर रन होती हैं। जीएचसी अपने समृद्ध प्रकार की प्रणाली के लिए विख्यात है, जिसमें सामान्यीकृत बीजगणितीय डेटा प्रकार और प्रकार परिवारों जैसे हाल के नवाचारों को सम्मलित किया गया, कंप्यूटर भाषा बेंचमार्क गेम कॉन्करेंसी (कंप्यूटर साइंस) और समानांतर कंप्यूटिंग के अपने उच्च-प्रदर्शन कार्यान्वयन पर भी प्रकाश डालता है।[42]
यह एक सक्रिय, बढ़ता हुआ समुदाय भाषा के आसपास सम्मलित है, और ऑनलाइन पैकेज रिपॉजिटरी हैकेज में 5,400 से अधिक तृतीय-पक्ष ओपन-सोर्स लाइब्रेरी और टूल उपलब्ध हैं।[43]
कोड उदाहरण
एक Hello, World! प्रोग्राम हास्केल में इस प्रकार लिखा जाएगा (केवल अंतिम पंक्ति सख्ती से जरूरी है):
module Main (main) जहां द्विभाषिया स्थिति में इसकी आवश्यकता नहीं है, मॉड्यूल फ़ाइल में डिफ़ॉल्ट है
main :: IO () -- संकलक इस प्रकार की परिभाषा का अनुमान लगा सकता है
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 का समर्थन करने वाला एक प्रारंभिक कार्यान्वयन है। यह लेनार्ट ऑगस्टसन द्वारा एमएल पर आधारित करके इसे लागू किया गया था। यह कुछ समय के लिए सक्रिय रूप से विकसित नहीं हुआ है।
- एनएचसी98 मेमोरी उपयोग को कम करने पर ध्यान केंद्रित करने वाला बायटेकोड कंपाइलर है।
- यॉर्क हास्केल कंपाइलर (Yhc ) एनएचसी98 का एक कांटा था, जिसका लक्ष्य सरल, अधिक पोर्टेबल और कुशल होना और हास्केल ट्रेसर हैट के लिए समर्थन को एकीकृत करना था। इसमें एक जावास्क्रिप्ट बैकएंड भी था, जिससे उपयोगकर्ता वेब ब्राउज़र में हास्केल प्रोग्राम चला सकते थे।
कार्यान्वयन पूरी तरह से हास्केल 98 के अनुरूप नहीं है, और इस प्रकार की हास्केल भाषा का उपयोग करते हुए इसमें सम्मलित हैं:
- एटा और फ्रीज जावा वर्चुअल मशीन को लक्षित करने वाली हास्केल की बोलियां हैं।
- गोफर (सॉफ्टवेयर ) हास्केल की एक शैक्षिक भाषा थी, जिसमें मार्क जोन्स द्वारा विकसित कंस्ट्रक्टर क्लासेस नामक एक विशेषता थी। इसे हग्स (हास्केल यूजर के गोफर सिस्टम) द्वारा प्रतिस्थापित किया गया था।
- हीलियम, हास्केल की नई भाषा हैं। स्पष्ट त्रुटियों को संदेशों के माध्यम से सीखने को सरल बनाने पर ध्यान केंद्रित किया गया है। वर्तमान में इसमें टाइप क्लास के लिए पूर्ण समर्थन की कमी है, जो इसे कई हास्केल प्रोग्रामों के साथ असंगत बनाता है।
उल्लेखनीय अनुप्रयोग
- सबूत सहायक Agda (प्रोग्रामिंग भाषा) हास्केल में लिखा गया है।[50]
- कबाल (सॉफ्टवेयर) स्वचालन बनाएँ और हास्केल लाइब्रेरीों और कार्यक्रमों की पैकेजिंग के लिए एक उपकरण है।[51]
- डार्क्स संशोधन नियंत्रण प्रणाली है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण।
- ग्लासगो हास्केल कंपाइलर भी अधिकांशतः उन्नत फंक्शनल प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है।
- Git-अनुबंध गिट संस्करण नियंत्रण के अनुसार (बड़ी) डेटा फ़ाइलों को प्रबंधित करने का उपकरण है। यह वितरण फ़ाइल तुल्यकालन प्रणाली (गिट-अनुबंध सहायक) भी प्रदान करता है।
- लिंस्पायर लिनक्स ने सिस्टम टूल्स डेवलपमेंट के लिए हास्केल को चुना।[52]
- पंडोक मार्कअप प्रारूप को दूसरे में बदलने का उपकरण है।
- पग (प्रोग्रामिंग) राकू (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा (पूर्व में पर्ल 6) के लिए कंपाइलर और इंटरप्रेटर (कंप्यूटिंग) है।
- टीइडल साइकिल्स लाइव कोडिंग संगीत के पैटर्न के लिए एक डोमेन बनाने वाली विशेष भाषा है, जो हास्केल में सन्निहित है।[53]
- एक्स मोनेड एक्स विंडो सिस्टम के लिए खिड़की प्रबंधक है, जो पूरी तरह हास्केल में लिखा गया है।[54]
उद्योग
- ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, ब्लूजपेक इंक के उपकरण हास्केल में लागू किए गए हैं।
- क्रिप्टोग्राफी एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, क्रिप्टोल हास्केल में लागू किया गया है।
- फेसबुक अपने एंटी-स्पैम प्रोग्राम को लागू करता है[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 के साथ डिफ़ॉल्ट बन गया।
संबंधित भाषाएँ
क्लीन (प्रोग्रामिंग भाषा) हास्केल की करीबी, सह भाषा है। हास्केल से इसका सबसे बड़ा विचलन इनपुट/आउटपुट और साइड-इफेक्ट्स के लिए मोनाड्स के अतिरिक्त विशिष्टता प्रकार के उपयोग में है।
हास्केल से प्रेरित भाषाओं की इस श्रृंखला को विभिन्न प्रकार की प्रणालियों के साथ विकसित किया गया है, जिनमें निम्नलिखित सम्मलित हैं:
- Agda (प्रमेय प्रमेय), निर्भर प्रकार के साथ फंक्शनल भाषा।
- केयेन (प्रोग्रामिंग भाषा) , आश्रित प्रकार के साथ।
- एल्म (प्रोग्रामिंग भाषा), वेब फ्रंट-एंड ऐप्स बनाने के लिए एक फंक्शनल भाषा, उपयोगकर्ता-परिभाषित या उच्च- प्रकार (प्रकार सिद्धांत) प्रकार की कक्षाओं या उदाहरणों के लिए कोई समर्थन नहीं हैं।
- एपिग्राम (प्रोग्रामिंग भाषा), प्रोग्राम के गुणों को साबित करने के लिए उपयुक्त आश्रित प्रकारों वाली फंक्शनल भाषा हैं।
- इदरीस (प्रोग्रामिंग भाषा), आश्रित प्रकार के साथ एक सामान्य प्रयोजन फंक्शनल भाषा, सेंट एंड्रयूज विश्वविद्यालय में विकसित की गई।
- प्योरस्क्रिप्ट जावास्क्रिप्ट के लिए संकलित है।
- ओमेगा, सख्त और अधिक।[clarification needed]
अन्य संबंधित भाषाओं में सम्मलित हैं:
- करी (प्रोग्रामिंग भाषा) , हास्केल पर आधारित फंक्शनल/तर्क प्रोग्रामिंग भाषा हैं।
उल्लेखनीय हास्केल रूपों में सम्मलित हैं:
- सामान्य प्रोग्रामिंग जेनेरिक हास्केल, जेनरिक प्रोग्रामिंग के लिए टाइप सिस्टम सपोर्ट के साथ हास्केल का एक संस्करण हैं।
- ह्यूम (प्रोग्रामिंग भाषा), एक तत्व मेलबॉक्स चैनलों के एक प्रकार के टुपल्स पर स्टेटलेस ऑटोमेटा के रूप में प्रक्रियाओं के आधार पर अंतःस्थापित प्रणाली के लिए सख्त फंक्शनल भाषा, जहां इस स्थिति को मेलबॉक्स में फीडबैक द्वारा रखा जाता है, और आउटपुट से चैनलों के रूप में मैपिंग विवरण हास्केल जैसी अभिव्यक्ति भाषा और वाक्य-विन्यास के साथ बॉक्स वायरिंग की जाती हैं।
सम्मेलन और कार्यशालाएं
हास्केल समुदाय अनुसंधान और विकास गतिविधियों के लिए नियमित रूप से मिलता है। मुख्य कार्यक्रम हैं:
- फंक्शनल प्रोग्रामिंग पर अंतर्राष्ट्रीय सम्मेलन (आईसीएफपी)
- हास्केल संगोष्ठी (पूर्व में हास्केल कार्यशाला)
- हास्केल कार्यान्वयन कार्यशाला
- फंक्शनल प्रोग्रामिंग के वाणिज्यिक उपयोगकर्ता (सीयूएफपी)
2006 से शुरू होकर, संगठित हैकथॉन की एक श्रृंखला हुई है, एचएसी श्रृंखला, जिसका उद्देश्य प्रोग्रामिंग भाषा उपकरण और लाइब्रेरीों में सुधार करना है।[73]
संदर्भ
- ↑ 1.0 1.1 1.2 Hudak et al. 2007.
- ↑ 2.0 2.1 Marlow, Simon (24 November 2009). "Announcing Haskell 2010". Haskell (Mailing list). Retrieved 12 March 2011.
- ↑ 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.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
- ↑ Norell, Ulf (2008). "Dependently Typed Programming in Agda" (PDF). Gothenburg: Chalmers University. Retrieved 9 February 2012.
- ↑ Hudak et al. 2007, pp. 12–38, 43.
- ↑ 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.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.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.
- ↑ Meijer, Erik (1 October 2009). "C9 Lectures: Dr. Erik Meijer – Functional Programming Fundamentals, Chapter 1 of 13". Channel 9. Microsoft. Retrieved 9 February 2012.
- ↑ 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) - ↑ Hickey, Rich. "Clojure Bookshelf". Listmania!. Archived from the original on 3 October 2017. Retrieved 3 October 2017.
- ↑ Heller, Martin (18 October 2011). "Turn up your nose at Dart and smell the CoffeeScript". InfoWorld. Retrieved 2020-07-15.
- ↑ "Declarative programming in Escher" (PDF). Retrieved 7 October 2015.
- ↑ 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.
- ↑ "Facebook Introduces 'Hack,' the Programming Language of the Future". WIRED. 20 March 2014.
- ↑ "Idris, a dependently typed language". Retrieved 26 October 2014.
- ↑ "LiveScript Inspiration". Retrieved 4 February 2014.
- ↑ Freeman, Phil (2016). "PureScript by Example". Leanpub. Retrieved 23 April 2017.
- ↑ Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Retrieved 9 February 2012.
- ↑ "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.
- ↑ "The Rust Reference: Appendix: Influences". Retrieved 3 February 2016.
- ↑ Fogus, Michael (6 August 2010). "MartinOdersky take(5) toList". Send More Paramedics. Retrieved 9 February 2012.
- ↑ 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.
- ↑ Chevalier, Tim (28 January 2008). "कोई मुझे "हास्केल" का उच्चारण बता सकता है?". Haskell-cafe (Mailing list). Retrieved 12 March 2011.
- ↑ Type inference originally using Hindley-Milner type inference
- ↑ 27.0 27.1 27.2 Peyton Jones 2003.
- ↑ Edward Kmett, Edward Kmett – Type Classes vs. the World
- ↑ Mossberg, Erik (2020-06-08), erkmos/haskell-companies, retrieved 2020-06-22
- ↑ 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.
- ↑ "प्रोडक्शन में हास्केल: रिस्कबुक". Serokell Software Development Company (in English). Retrieved 2021-09-07.
- ↑ "प्रोग्रामिंग लैंग्वेज इंडेक्स की PYPL लोकप्रियता". pypl.github.io (in English). May 2021. Archived from the original on 7 May 2021. Retrieved 16 May 2021.
- ↑ Frederickson, Ben. "गिटहब उपयोगकर्ताओं द्वारा रैंकिंग प्रोग्रामिंग भाषाएं". www.benfrederickson.com. Retrieved 6 September 2019.
- ↑ 34.0 34.1 34.2 Peyton Jones 2003, Preface.
- ↑ Wadler, Philip (October 1988). "तदर्थ बहुरूपता को कम तदर्थ कैसे बनाया जाए".
- ↑ Peyton Jones, Simon (2003). "हेयर शर्ट पहनना: हास्केल पर एक पूर्वव्यापी". Microsoft.
- ↑ "हास्केल विकी: कार्यान्वयन". Retrieved 18 December 2012.
- ↑ "हास्केल में आपका स्वागत है'". The Haskell' Wiki. Archived from the original on 20 February 2016. Retrieved 11 February 2016.
- ↑ GHC 2020 Team (29 October 2021) GHC 9.2.1 released
- ↑ 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.
- ↑ Hallgren, T. (January 2001). "फंक्शनल डिपेंडेंसीज के साथ फन, या हास्केल में स्टेटिक संगणनाओं में वैल्यू के रूप में टाइप". Proceedings of the Joint CS/CE Winter Meeting. Varberg, Sweden.
- ↑ Computer Language Benchmarks Game
- ↑ "HackageDB आँकड़े". Hackage.haskell.org. Archived from the original on 3 May 2013. Retrieved 26 June 2013.
- ↑ "Implementations" at the Haskell Wiki
- ↑ "The LLVM Backend". GHC Trac.
- ↑ Terei, David A.; Chakravarty, Manuel M. T. (2010). "जीएचसी के लिए एक एलएलवीएम बैकएंड". Proceedings of ACM SIGPLAN Haskell Symposium 2010. ACM Press.
- ↑ C. Ryder and S. Thompson (2005). "Porting HaRe to the GHC API"
- ↑ Utrecht Haskell Compiler
- ↑ Hudak et al. 2007, pp. 12–22.
- ↑ Agda 2, Agda Github Community, 2021-10-15, retrieved 2021-10-16
- ↑ "हास्केल कैबल". Retrieved 8 April 2015.
- ↑ "लिनस्पायर/फ्रीस्पायर कोर ओएस टीम और हास्केल". Debian Haskell mailing list. May 2006.
- ↑ "ज्वारीय चक्रों के साथ लाइव कोड | ज्वारीय चक्र". doc.tidalcycles.org (in English). Retrieved 2022-01-19.
- ↑ xmonad.org
- ↑ "हास्केल के साथ स्पैम से लड़ना". Facebook Code (in English). 26 June 2015. Retrieved 11 August 2019.
- ↑ "ओपन-सोर्सिंग Haxl, हास्केल के लिए एक पुस्तकालय". Facebook Code (in English). 10 June 2014. Retrieved 11 August 2019.
- ↑ "इनपुट-आउटपुट-एचके/कार्डानो-नोड: कार्डानो विकेंद्रीकृत ब्लॉकचैन में भाग लेने के लिए उपयोग किया जाने वाला मुख्य घटक". GitHub. Retrieved 2022-03-18.
- ↑ Parsing, analyzing, and comparing source code across many languages: github/semantic, GitHub, 7 June 2019, retrieved 7 June 2019
- ↑ "कार्यात्मक प्रोग्रामिंग कार्यशाला रिपोर्ट के वाणिज्यिक उपयोगकर्ता" (PDF). Retrieved 10 June 2022.
- ↑ 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.
- ↑ "तिखोन जेल्विस: लक्ष्य पर हास्केल". YouTube.
- ↑ "वेब/फ्रेमवर्क - हास्केलविकि". wiki.haskell.org. Retrieved 17 September 2022.
- ↑ Jan-Willem Maessen. Eager Haskell: Resource-bounded execution yields efficient iteration. Proceedings of the 2002 Association for Computing Machinery (ACM) SIGPLAN workshop on Haskell.
- ↑ [dead link]Simon Peyton Jones. Wearing the hair shirt: a retrospective on Haskell. Invited talk at POPL 2003.
- ↑ "आलसी मूल्यांकन से उत्कृष्ट प्रदर्शन हो सकता है, जैसे कंप्यूटर भाषा बेंचमार्क गेम".
- ↑ 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.
- ↑ "डीडीसी - हास्केल विकि". Haskell.org. 3 December 2010. Retrieved 26 June 2013.
- ↑ Ben Lippmeier, Type Inference and Optimisation for an Impure World, Australian National University (2010) PhD thesis, chapter 1
- ↑ Robert Harper (25 April 2011). "आलस्य की बात". closed access publication – behind paywall
- ↑ Robert Harper (16 April 2011). "मॉड्यूल सबसे ज्यादा मायने रखते हैं।". closed access publication – behind paywall
- ↑ "कैबल नर्क को सुलझाना". www.yesodweb.com. Retrieved 11 August 2019.
- ↑ "कबाल न्यू-बिल्ड की घोषणा: निक्स-शैली स्थानीय बनाता है". Retrieved 1 October 2019.
- ↑ "हैकथॉन - हास्केल विकि".
ग्रन्थसूची
- Reports
- Peyton Jones, Simon, ed. (2003). Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press. ISBN 978-0521826143.
- Marlow, Simon, ed. (2010). Haskell 2010 Language Report (PDF). Haskell.org.
- Textbooks
- Davie, Antony (1992). An Introduction to Functional Programming Systems Using Haskell. Cambridge University Press. ISBN 978-0-521-25830-2.
- Bird, Richard (1998). Introduction to Functional Programming using Haskell (2nd ed.). Prentice Hall Press. ISBN 978-0-13-484346-9.
- Hudak, Paul (2000). The Haskell School of Expression: Learning Functional Programming through Multimedia. New York: Cambridge University Press. ISBN 978-0521643382.
- Hutton, Graham (2007). Programming in Haskell. Cambridge University Press. ISBN 978-0521692694.
- O'Sullivan, Bryan; Stewart, Don; Goerzen, John (2008). Real World Haskell. Sebastopol: O'Reilly. ISBN 978-0-596-51498-3(full text)
{{cite book}}: External link in(help)CS1 maint: postscript (link)|postscript= - Thompson, Simon (2011). Haskell: The Craft of Functional Programming (3rd ed.). Addison-Wesley. ISBN 978-0201882957.
- Lipovača, Miran (April 2011). Learn You a Haskell for Great Good!. San Francisco: No Starch Press. ISBN 978-1-59327-283-8. (full text)
- Bird, Richard (2014). Thinking Functionally with Haskell. Cambridge University Press. ISBN 978-1-107-45264-0.
- Tutorials
- Hudak, Paul; Peterson, John; Fasel, Joseph (June 2000). "A Gentle Introduction To Haskell, Version 98". Haskell.org.
- Learn You a Haskell for Great Good! - A community version (learnyouahaskell.github.io). An up-to-date community maintained version of the renowned "Learn You a Haskell" (LYAH) guide.
- Yet Another Haskell Tutorial, by Hal Daumé III; assumes far less prior knowledge than official tutorial
- Yorgey, Brent (12 March 2009). "The Typeclassopedia" (PDF). The Monad.Reader (13): 17–68.
- Maguire, Sandy (2018). Thinking with Types: Type-Level Programming in Haskell.
- History
- Hudak, Paul; Hughes, John; Peyton Jones, Simon; Wadler, Philip (2007). "A History of Haskell: Being Lazy with Class" (PDF). Proceedings of the Third ACM SIGPLAN Conference on History of Programming Languages (HOPL III): 12–1–55. doi:10.1145/1238844.1238856. ISBN 978-1-59593-766-7. S2CID 52847907.
- Hamilton, Naomi (19 September 2008). "The A-Z of Programming Languages: Haskell". Computerworld.
बाहरी कड़ियाँ
- No URL found. Please specify a URL here or add one to Wikidata.
- Official wiki
- Haskell Weekly