हास्केल: Difference between revisions
(Created page with "{{short description|Functional programming language}} {{Other uses}} {{Use dmy dates|date=November 2019}} {{Infobox programming language | name = Haskell | logo = Logo_of_the_...") |
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}} शिक्षण, अनुसंधान और औद्योगिक अनुप्रयोगों के लिए डिज़ाइन किया गया, हास्केल ने कई प्रोग्रामिंग भाषा सुविधाओं का बीड़ा उठाया है जैसे कि टाइप | हास्केल ({{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}}हास्केल ट्यूटोरियल के लिए Google खोजों द्वारा 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 स्रोत कोड रिपॉजिटरी पर 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}}हास्केल ट्यूटोरियल के लिए Google खोजों द्वारा 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 ]] स्रोत कोड रिपॉजिटरी पर 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 तक, एक दर्जन से अधिक गैर-सख्त कार्य, विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषाएं मौजूद थीं। मिरांडा सबसे व्यापक रूप से इस्तेमाल किया गया था, लेकिन यह मालिकाना सॉफ्टवेयर था। पोर्टलैंड, ओरेगॉन में | 1985 में रिसर्च सॉफ्टवेयर लिमिटेड द्वारा मिरांडा (प्रोग्रामिंग लैंग्वेज) जारी करने के बाद आलसी कार्यात्मक भाषाओं में रुचि बढ़ी। 1987 तक, एक दर्जन से अधिक गैर-सख्त कार्य, विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषाएं मौजूद थीं। मिरांडा सबसे व्यापक रूप से इस्तेमाल किया गया था, लेकिन यह [[ मालिकाना सॉफ्टवेयर ]] था। पोर्टलैंड, ओरेगॉन में [[ कार्यात्मक प्रोग्रामिंग भाषाएं और कंप्यूटर वास्तुकला ]] (FPCA '87) पर सम्मेलन में, एक मजबूत सहमति थी कि ऐसी भाषाओं के लिए एक खुले मानक को परिभाषित करने के लिए एक समिति का गठन किया जाए। समिति का उद्देश्य कार्यात्मक-भाषा डिजाइन में भविष्य के शोध के आधार के रूप में कार्य करने के लिए मौजूदा कार्यात्मक भाषाओं को एक आम भाषा में समेकित करना था।{{sfn|Peyton Jones|2003|loc=Preface}} | ||
| Line 40: | Line 40: | ||
हास्केल को एक समिति द्वारा विकसित किया गया था, जहां संभव हो वहां शेल्फ समाधानों को एक साथ लाने का प्रयास किया गया था। | हास्केल को एक समिति द्वारा विकसित किया गया था, जहां संभव हो वहां शेल्फ समाधानों को एक साथ लाने का प्रयास किया गया था। | ||
प्रकार की कक्षाएं, जो प्रकार की सुरक्षा को सक्षम करती हैं। प्रकार-सुरक्षित ऑपरेटर ओवरलोडिंग, पहली बार फिलिप वाडलर और स्टीफन ब्लॉट द्वारा समानता प्रकारों के तदर्थ संचालन और उस समय भाषाओं में अंकगणितीय अधिभार को संबोधित करने के लिए प्रस्तावित किया गया था।<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|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 51: | Line 51: | ||
=== हास्केल 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 61: | Line 61: | ||
हास्केल 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>fact (n+1) = (n+1) * fact n</code>) की अनुमति नहीं थी। इस [[ सिंटैक्टिक चीनी ]] में भ्रामक शब्दार्थ था, जिसमें कोड ऐसा दिखता था जैसे इसका उपयोग किया गया हो <code>(+)</code> ऑपरेटर, लेकिन वास्तव में कोड का उपयोग करने के लिए desugared <code>(-)</code> और <code>(>=)</code>. | ||
* प्रकार के अनुमान के नियमों में ढील दी गई ताकि अधिक कार्यक्रमों को जाँचने की अनुमति मिल सके। | * प्रकार के अनुमान के नियमों में ढील दी गई ताकि अधिक कार्यक्रमों को जाँचने की अनुमति मिल सके। | ||
* कुछ | * कुछ [[ सिंटेक्स (प्रोग्रामिंग भाषाएं) ]] मुद्दे (औपचारिक व्याकरण में परिवर्तन) तय किए गए थे: [[ पैटर्न गार्ड ]] जोड़े गए थे, जिससे गार्ड के भीतर पैटर्न मिलान हो सके; संचालन के आदेश का संकल्प सरल तरीके से निर्दिष्ट किया गया था जो वास्तविक अभ्यास को दर्शाता है; ऑपरेटरों और टिप्पणियों के भाषा के [[ शाब्दिक वाक्य रचना ]] की बातचीत में एक बढ़त का मामला संबोधित किया गया था, और अनपेक्षित सिंटैक्स त्रुटियों को खत्म करने के लिए do-notation और if-then-else की बातचीत को ट्वीक किया गया था। | ||
* <code>LANGUAGE</code> ई> निर्देश (प्रोग्रामिंग) निर्दिष्ट किया गया था। 2010 तक, भाषा के दर्जनों विस्तार व्यापक उपयोग में थे, और GHC (अन्य संकलकों के बीच) ने प्रदान किया <code>LANGUAGE</code> pragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने के लिए। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता है <code>Haskell2010</code> एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं। | * <code>LANGUAGE</code> ई> [[ निर्देश (प्रोग्रामिंग) ]] निर्दिष्ट किया गया था। 2010 तक, भाषा के दर्जनों विस्तार व्यापक उपयोग में थे, और GHC (अन्य संकलकों के बीच) ने प्रदान किया <code>LANGUAGE</code> pragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने के लिए। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता है <code>Haskell2010</code> एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं। | ||
=== भविष्य के मानक === | === भविष्य के मानक === | ||
| Line 75: | Line 75: | ||
{{Main|Haskell features}} | {{Main|Haskell features}} | ||
{{See also|Glasgow Haskell Compiler#Extensions to Haskell}} | {{See also|Glasgow Haskell Compiler#Extensions to Haskell}} | ||
हास्केल में आलसी मूल्यांकन, बेनामी फ़ंक्शन, पैटर्न मिलान, सूची समझ, प्रकार वर्ग और प्रकार बहुरूपता शामिल हैं। यह विशुद्ध रूप से कार्यात्मक भाषा है, जिसका अर्थ है कि कार्यों का आमतौर पर कोई साइड इफेक्ट (कंप्यूटर विज्ञान) नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए एक अलग निर्माण मौजूद है, ऑर्थोगोनल # कंप्यूटर विज्ञान कार्यों के प्रकार के लिए। एक शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य # अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है। | हास्केल में आलसी मूल्यांकन, बेनामी फ़ंक्शन, [[ पैटर्न मिलान ]], [[ सूची समझ ]], प्रकार वर्ग और प्रकार बहुरूपता शामिल हैं। यह [[ विशुद्ध रूप से कार्यात्मक भाषा ]] है, जिसका अर्थ है कि कार्यों का आमतौर पर कोई [[ साइड इफेक्ट (कंप्यूटर विज्ञान) ]] नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए एक अलग निर्माण मौजूद है, ऑर्थोगोनल # कंप्यूटर विज्ञान कार्यों के प्रकार के लिए। एक शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य # अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है। | ||
हास्केल के पास दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा है, स्टैटिक टाइप#स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में बहुरूपता (कंप्यूटर विज्ञान) को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,<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}} और #कार्यान्वयन। इसका मुख्य कार्यान्वयन, ग्लासगो हास्केल | हास्केल का एक खुला, प्रकाशित विनिर्देश है,{{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> | ||
| Line 95: | Line 95: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
हास्केल में | हास्केल में [[ कारख़ाने का ]] फ़ंक्शन, कुछ अलग तरीकों से परिभाषित किया गया है (पहली पंक्ति [[ हस्ताक्षर टाइप करें ]] है, जो वैकल्पिक है और प्रत्येक कार्यान्वयन के लिए समान है): | ||
<वाक्यविन्यास लैंग = हैकेल> | <वाक्यविन्यास लैंग = हैकेल> | ||
फैक्टोरियल :: (इंटीग्रल ए) => ए -> ए | फैक्टोरियल :: (इंटीग्रल ए) => ए -> ए | ||
| Line 132: | Line 132: | ||
- सूची समझ का उपयोग करना | - सूची समझ का उपयोग करना | ||
QuickSort [] = [] - खाली सूची पहले से ही क्रमबद्ध है | QuickSort [] = [] - खाली सूची पहले से ही क्रमबद्ध है | ||
[[ जल्दी से सुलझाएं ]]x:xs) = क्विकसॉर्ट [ए | a <- xs, a <x] - सूची के बाएं भाग को क्रमबद्ध करें | |||
++ [x] ++ - दो क्रमबद्ध भागों के बीच पिवट सम्मिलित करें | ++ [x] ++ - दो क्रमबद्ध भागों के बीच पिवट सम्मिलित करें | ||
क्विकसॉर्ट [ए | a <- xs, a >= x] -- सूची के दाहिने हिस्से को क्रमबद्ध करें | क्विकसॉर्ट [ए | a <- xs, a >= x] -- सूची के दाहिने हिस्से को क्रमबद्ध करें | ||
| Line 145: | Line 145: | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
<!-- To anyone wishing to expand or improve this section: the article "A History of Haskell: Being Lazy With Class", linked to in the Further reading section contains detailed descriptions of all implementations. --> | <!-- To anyone wishing to expand or improve this section: the article "A History of Haskell: Being Lazy With Class", linked to in the Further reading section contains detailed descriptions of all implementations. --> | ||
सभी सूचीबद्ध कार्यान्वयन ओपन सोर्स लाइसेंस के अंतर्गत वितरित किए जाते हैं।<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 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में शामिल हैं: | ||
* ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और एएनएसआई सी के लिए दो मध्यवर्ती | * ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और [[ एएनएसआई सी ]] के लिए दो [[ मध्यवर्ती भाषा ]]ओं में से एक के माध्यम से संकलित करता है: [[ सी-- ]], या हाल के संस्करणों में, [[ एलएलवीएम ]] (पूर्व में निम्न स्तरीय वर्चुअल मशीन) बिटकोड।<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 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}} लेकिन अब ज्यादातर जीएचसीआई द्वारा प्रतिस्थापित कर दिया गया है। यह एक ग्राफिक्स लाइब्रेरी के साथ भी आता है। | ||
* एचबीसी हास्केल 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> | ||
* डार्क्स एक संशोधन नियंत्रण प्रणाली है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण। | * [[ डार्क्स ]] एक [[ संशोधन नियंत्रण प्रणाली ]] है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण। | ||
* ग्लासगो हास्केल कंपाइलर भी अक्सर उन्नत कार्यात्मक प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है। | * ग्लासगो हास्केल कंपाइलर भी अक्सर उन्नत कार्यात्मक प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है। | ||
* | * [[ 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> | ||
* | * [[ पंडोक ]] एक मार्कअप प्रारूप को दूसरे में बदलने का एक उपकरण है। | ||
* | * [[ पग (प्रोग्रामिंग) ]] [[ राकू (प्रोग्रामिंग भाषा) ]] प्रोग्रामिंग लैंग्वेज (पूर्व में पर्ल 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 | *[[ Xmonad ]] [[ एक्स विंडो सिस्टम ]] के लिए एक [[ खिड़की प्रबंधक ]] है, जो पूरी तरह हास्केल में लिखा गया है।<ref>xmonad.org</ref> | ||
| Line 191: | Line 191: | ||
*ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, Bluespec, Inc. के उपकरण हास्केल में लागू किए गए हैं। | *ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, Bluespec, Inc. के उपकरण हास्केल में लागू किए गए हैं। | ||
* क्रिप्टोग्राफी एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, क्रिप्टोल हास्केल में लागू किया गया है। | * [[ क्रिप्टोग्राफी ]] एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, [[ क्रिप्टोल ]] हास्केल में लागू किया गया है। | ||
* फेसबुक अपने एंटी-स्पैम प्रोग्राम को लागू करता है<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/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, पहला औपचारिक तरीका | * [[ seL4 ]], पहला औपचारिक तरीका [[ 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 233: | Line 233: | ||
}} | }} | ||
</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>https://www.youtube.com/watch?v=0EgHNq6Pej8</ref> | *[[ Target Corporation ]] store' आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।<ref>{{cite web | url=https://www.youtube.com/watch?v=0EgHNq6Pej8 | title=तिखोन जेल्विस: लक्ष्य पर हास्केल| website=[[YouTube]] }}</ref> | ||
| Line 239: | Line 239: | ||
हास्केल के लिए लिखे गए उल्लेखनीय वेब ढांचे में शामिल हैं:<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> | ||
* आईएचपी (वेब फ्रेमवर्क) | * [[ आईएचपी (वेब फ्रेमवर्क) ]] | ||
* यसोड (वेब फ्रेमवर्क) | * [[ यसोड (वेब फ्रेमवर्क) ]] | ||
* नौकर (वेब ढांचा) | * नौकर (वेब ढांचा) | ||
* स्नैप (वेब फ्रेमवर्क) | * [[ स्नैप (वेब फ्रेमवर्क) ]] | ||
== आलोचना == | == आलोचना == | ||
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}} {{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=मॉड्यूल सबसे ज्यादा मायने रखते हैं।}} {{ | </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=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 और साइड-इफेक्ट्स के लिए मोनाड्स के बजाय [[ विशिष्टता प्रकार ]]ों के उपयोग में है। | |||
हास्केल से प्रेरित भाषाओं की एक श्रृंखला, लेकिन विभिन्न प्रकार की प्रणालियों के साथ विकसित की गई है, जिनमें शामिल हैं: | हास्केल से प्रेरित भाषाओं की एक श्रृंखला, लेकिन विभिन्न प्रकार की प्रणालियों के साथ विकसित की गई है, जिनमें शामिल हैं: | ||
* 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 299: | Line 299: | ||
*{{cite book|first=Paul|last=Hudak|author-link=Paul Hudak|title=The Haskell School of Expression: Learning Functional Programming through Multimedia|publisher=Cambridge University Press|location=New York|year=2000|isbn=978-0521643382|url=http://www.cs.yale.edu/homes/hudak/SOE/}} | *{{cite book|first=Paul|last=Hudak|author-link=Paul Hudak|title=The Haskell School of Expression: Learning Functional Programming through Multimedia|publisher=Cambridge University Press|location=New York|year=2000|isbn=978-0521643382|url=http://www.cs.yale.edu/homes/hudak/SOE/}} | ||
*{{cite book|first=Graham|last=Hutton|title=Programming in Haskell|year=2007|publisher=Cambridge University Press|isbn=978-0521692694|url=http://www.cs.nott.ac.uk/~gmh/book.html}} | *{{cite book|first=Graham|last=Hutton|title=Programming in Haskell|year=2007|publisher=Cambridge University Press|isbn=978-0521692694|url=http://www.cs.nott.ac.uk/~gmh/book.html}} | ||
*{{Cite book|first1=Bryan|last1=O'Sullivan|author-link1=Bryan O'Sullivan (computer programmer)|first2=Don|last2=Stewart|author-link2=Don Stewart (computer programmer)|last3=Goerzen|first3=John|author-link3=John Goerzen|title=Real World Haskell|year=2008|publisher=O'Reilly|location=Sebastopol|isbn=978-0-596-51498-3|postscript= | *{{Cite book|first1=Bryan|last1=O'Sullivan|author-link1=Bryan O'Sullivan (computer programmer)|first2=Don|last2=Stewart|author-link2=Don Stewart (computer programmer)|last3=Goerzen|first3=John|author-link3=John Goerzen|title=Real World Haskell|year=2008|publisher=O'Reilly|location=Sebastopol|isbn=978-0-596-51498-3|postscript=([http://book.realworldhaskell.org/read/ full text])|title-link=Real World Haskell}} | ||
*{{cite book|first=Simon|last=Thompson|title=Haskell: The Craft of Functional Programming|edition=3rd|publisher=Addison-Wesley|year=2011|isbn=978-0201882957|url=http://www.haskellcraft.com/}} | *{{cite book|first=Simon|last=Thompson|title=Haskell: The Craft of Functional Programming|edition=3rd|publisher=Addison-Wesley|year=2011|isbn=978-0201882957|url=http://www.haskellcraft.com/}} | ||
*{{cite book|last=Lipovača|first=Miran|title=Learn You a Haskell for Great Good!|url=https://archive.org/details/learnyouhaskellf00lipo_0|date=April 2011|publisher=No Starch Press|location=San Francisco|isbn=978-1-59327-283-8|url-access=registration}} ([http://learnyouahaskell.com/chapters full text]) | *{{cite book|last=Lipovača|first=Miran|title=Learn You a Haskell for Great Good!|url=https://archive.org/details/learnyouhaskellf00lipo_0|date=April 2011|publisher=No Starch Press|location=San Francisco|isbn=978-1-59327-283-8|url-access=registration}} ([http://learnyouahaskell.com/chapters full text]) | ||
| Line 317: | Line 317: | ||
==इस पेज में लापता आंतरिक लिंक की सूची== | ==इस पेज में लापता आंतरिक लिंक की सूची== | ||
==बाहरी | *अनुमान टाइप करें | ||
*सामान्य प्रयोजन प्रोग्रामिंग भाषा | |||
*प्रकार की सुरक्षा | |||
*शब्दार्थ (कंप्यूटर विज्ञान) | |||
*गूगल खोज | |||
*खुला मानक | |||
*कार्यात्मक भाषाएँ | |||
*सख्त समारोह | |||
*कक्षाएं टाइप करें | |||
*सी (प्रोग्रामिंग भाषा) | |||
*कार्रवाई के आदेश | |||
*बहुरूपता टाइप करें | |||
*अनाम समारोह | |||
*गैर नियतात्मक एल्गोरिथम | |||
*समवर्ती (कंप्यूटर विज्ञान) | |||
*दुभाषिया (कंप्यूटिंग) | |||
*मनमाना परिशुद्धता | |||
*उट्रेच विश्वविद्यालय | |||
*आलिंगन (दुभाषिया) | |||
*कार्डानो (ब्लॉकचेन प्लेटफॉर्म) | |||
*सिमेंटिक (सॉफ्टवेयर) | |||
*स्टैंडर्ड चार्टर्ड | |||
*औपचारिक तरीके | |||
*वेब ढांचा | |||
*सेवक (वेब फ्रेमवर्क) | |||
*एपिग्राम (प्रोग्रामिंग भाषा) | |||
*Agda (प्रमेय प्रमाण) | |||
*एल्म (प्रोग्रामिंग भाषा) | |||
*इदरीस (प्रोग्रामिंग भाषा) | |||
*ह्यूम (प्रोग्रामिंग भाषा) | |||
==बाहरी कड़ियाँ== | |||
{{Wikibooks|Haskell}} | {{Wikibooks|Haskell}} | ||
{{Wikibooks|Write Yourself a Scheme in 48 Hours}} | {{Wikibooks|Write Yourself a Scheme in 48 Hours}} | ||
| Line 327: | Line 357: | ||
{{Programming languages}} | {{Programming languages}} | ||
{{Authority control}} | {{Authority control}} | ||
[[ | [[श्रेणी:अकादमिक प्रोग्रामिंग भाषाएं]] | ||
[[ | [[श्रेणी: हास्केल कोड के उदाहरण के साथ लेख]] | ||
[[ | [[श्रेणी: शैक्षिक प्रोग्रामिंग भाषाएं]] | ||
[[ | [[श्रेणी: कार्यात्मक भाषाएं]] | ||
[[ | [[श्रेणी: हास्केल प्रोग्रामिंग भाषा परिवार| ]] | ||
[[ | [[श्रेणी:साक्षर प्रोग्रामिंग]] | ||
[[ | [[श्रेणी: पैटर्न मिलान प्रोग्रामिंग भाषाएं]] | ||
[[ | [[श्रेणी: 1990 में बनाई गई प्रोग्रामिंग भाषा]] | ||
[[ | [[श्रेणी:सांख्यिकीय रूप से टाइप की गई प्रोग्रामिंग भाषाएं]] | ||
[[Category: Machine Translated Page]] | [[Category: Machine Translated Page]] | ||
[[Category:Created On | [[Category:Created On 02/01/2023]] | ||
Revision as of 10:54, 2 January 2023
हास्केल (/ˈhæskəl/[25]) एक सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है|सामान्य-उद्देश्य, स्थिर टाइपिंग |स्थैतिक रूप से टाइप की गई, प्रकार अनुमान और आलसी मूल्यांकन के साथ विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग प्रोग्रामिंग भाषा।[26][27] शिक्षण, अनुसंधान और औद्योगिक अनुप्रयोगों के लिए डिज़ाइन किया गया, हास्केल ने कई प्रोग्रामिंग भाषा सुविधाओं का बीड़ा उठाया है जैसे कि वर्ग टाइप करें ेस, जो टाइप सुरक्षा को सक्षम करती हैं। टाइप-सेफ ऑपरेटर ओवरलोडिंग , और मोनाड_ (फंक्शनल_प्रोग्रामिंग) इनपुट / आउटपुट। हास्केल का मुख्य कार्यान्वयन ग्लासगो हास्केल कंपाइलर (जीएचसी) है। इसका नाम तर्क शास्त्री हास्केल करी के नाम पर रखा गया है।[1] हास्केल के सिमेंटिक्स (कंप्यूटर विज्ञान) ऐतिहासिक रूप से मिरांडा (प्रोग्रामिंग भाषा) प्रोग्रामिंग लैंग्वेज पर आधारित हैं, जो शुरुआती हास्केल वर्किंग ग्रुप के प्रयासों पर ध्यान केंद्रित करने के लिए काम करता था।[28] भाषा का अंतिम औपचारिक विनिर्देश जुलाई 2010 में बनाया गया था, जबकि जीएचसी का विकास भाषा विस्तार के माध्यम से हास्केल का विस्तार करना जारी रखता है।
हास्केल का उपयोग अकादमिक और उद्योग में किया जाता है।[29][30][31] As of May 2021[update]हास्केल ट्यूटोरियल के लिए Google खोजों द्वारा 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 की बातचीत को ट्वीक किया गया था।
LANGUAGEई> निर्देश (प्रोग्रामिंग) निर्दिष्ट किया गया था। 2010 तक, भाषा के दर्जनों विस्तार व्यापक उपयोग में थे, और GHC (अन्य संकलकों के बीच) ने प्रदान कियाLANGUAGEpragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने के लिए। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता हैHaskell2010एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं।
भविष्य के मानक
2020 के लिए अगले औपचारिक विनिर्देश की योजना बनाई गई थी।[3]29 अक्टूबर 2021 को GHC संस्करण 9.2.1 के साथ, GHC2021 एक्सटेंशन जारी किया गया था। हालांकि यह एक औपचारिक भाषा युक्ति नहीं है, यह हास्केल 2010 में कई स्थिर, व्यापक रूप से उपयोग किए जाने वाले जीएचसी एक्सटेंशन को जोड़ती है।[39]
सुविधाएँ
हास्केल में आलसी मूल्यांकन, बेनामी फ़ंक्शन, पैटर्न मिलान , सूची समझ , प्रकार वर्ग और प्रकार बहुरूपता शामिल हैं। यह विशुद्ध रूप से कार्यात्मक भाषा है, जिसका अर्थ है कि कार्यों का आमतौर पर कोई साइड इफेक्ट (कंप्यूटर विज्ञान) नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए एक अलग निर्माण मौजूद है, ऑर्थोगोनल # कंप्यूटर विज्ञान कार्यों के प्रकार के लिए। एक शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य # अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है।
हास्केल के पास दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा है, स्टैटिक टाइप#स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में बहुरूपता (कंप्यूटर विज्ञान) को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,[40] लेकिन कई और उपयोग खोजने के बाद से।[41] निर्माण जो साइड-इफेक्ट्स का प्रतिनिधित्व करता है, एक मोनाड (कार्यात्मक प्रोग्रामिंग) का एक उदाहरण है: एक सामान्य ढांचा जो विभिन्न संगणनाओं को मॉडल कर सकता है जैसे कि त्रुटि से निपटने, गैर-नियतात्मक एल्गोरिथ्म, पदच्छेद और सॉफ्टवेयर लेनदेन स्मृति उन्हें साधारण डेटाटाइप्स के रूप में परिभाषित किया गया है, लेकिन हास्केल उनके उपयोग के लिए कुछ सिंटैक्टिक चीनी प्रदान करता है।
हास्केल का एक खुला, प्रकाशित विनिर्देश है,[27] और #कार्यान्वयन। इसका मुख्य कार्यान्वयन, ग्लासगो हास्केल संकलक (जीएचसी), एक इंटरप्रेटर (कंप्यूटिंग) और मशीन कोड | नेटिव-कोड कंपाइलर दोनों है जो अधिकांश प्लेटफॉर्म पर चलता है। जीएचसी अपने समृद्ध प्रकार की प्रणाली के लिए विख्यात है, जिसमें सामान्यीकृत बीजगणितीय डेटा प्रकार और प्रकार परिवारों जैसे हाल के नवाचारों को शामिल किया गया कंप्यूटर भाषा बेंचमार्क गेम कॉन्करेंसी (कंप्यूटर साइंस) और समानांतर कंप्यूटिंग के अपने उच्च-प्रदर्शन कार्यान्वयन पर भी प्रकाश डालता है।[42] एक सक्रिय, बढ़ता हुआ समुदाय भाषा के आसपास मौजूद है, और ऑनलाइन पैकेज रिपॉजिटरी हैकेज में 5,400 से अधिक तृतीय-पक्ष ओपन-सोर्स लाइब्रेरी और टूल उपलब्ध हैं।[43]
कोड उदाहरण
एक हैलो, दुनिया! हास्केल में कार्यक्रम (केवल अंतिम पंक्ति सख्ती से जरूरी है):
<वाक्यविन्यास लैंग = हैकेल> मॉड्यूल मुख्य (मुख्य) जहां - दुभाषिया में आवश्यक नहीं है, मॉड्यूल फ़ाइल में डिफ़ॉल्ट है
मुख्य :: IO () - संकलक इस प्रकार की परिभाषा का अनुमान लगा सकता है main = putStrLn हैलो, वर्ल्ड! </वाक्यविन्यास हाइलाइट>
हास्केल में कारख़ाने का फ़ंक्शन, कुछ अलग तरीकों से परिभाषित किया गया है (पहली पंक्ति हस्ताक्षर टाइप करें है, जो वैकल्पिक है और प्रत्येक कार्यान्वयन के लिए समान है): <वाक्यविन्यास लैंग = हैकेल> फैक्टोरियल :: (इंटीग्रल ए) => ए -> ए
- पुनरावर्तन का उपयोग करना (ifthenelse अभिव्यक्ति के साथ) क्रमगुणित n = यदि n < 2
फिर 1
और n * फैक्टोरियल (n - 1)
- पुनरावर्तन का उपयोग करना (पैटर्न मिलान के साथ) भाज्य 0 = 1 क्रमगुणित n = n * भाज्य (n - 1)
- पुनरावर्तन का उपयोग करना (गार्ड के साथ) भाज्य n
| एन <2 = 1 | अन्यथा = n * भाज्य (n - 1)
- एक सूची और उत्पाद फ़ंक्शन का उपयोग करना क्रमगुणित n = उत्पाद [1..n]
- तह का उपयोग करना (उत्पाद को लागू करता है) फैक्टोरियल एन = फोल्डएल (*) 1 [1..एन]
- प्वाइंट-फ्री स्टाइल फैक्टोरियल = फोल्डर (*) 1। एनमफ्रॉमटो 1 </वाक्यविन्यास हाइलाइट>
जैसा कि पूर्णांक प्रकार में मनमाना-परिशुद्धता है, यह कोड मानों की गणना करेगा factorial 100000 (एक 456,574-अंकों की संख्या), सटीकता की कोई हानि नहीं।
त्वरित सॉर्ट ओवर सूचियों के समान एल्गोरिथ्म का कार्यान्वयन, जहां पहले तत्व को धुरी के रूप में लिया जाता है: <वाक्यविन्यास लैंग = हैकेल> - एनोटेशन टाइप करें (वैकल्पिक, प्रत्येक कार्यान्वयन के लिए समान) QuickSort :: Ord a => [a] -> [a]
- सूची समझ का उपयोग करना QuickSort [] = [] - खाली सूची पहले से ही क्रमबद्ध है जल्दी से सुलझाएं x:xs) = क्विकसॉर्ट [ए | a <- xs, a <x] - सूची के बाएं भाग को क्रमबद्ध करें
++ [x] ++ - दो क्रमबद्ध भागों के बीच पिवट सम्मिलित करें
क्विकसॉर्ट [ए | a <- xs, a >= x] -- सूची के दाहिने हिस्से को क्रमबद्ध करें
- फ़िल्टर का उपयोग करना क्विकसॉर्ट [] = [] क्विकसॉर्ट (x:xs) = क्विकसॉर्ट (फ़िल्टर (<x) xs)
++ [एक्स] ++
QuickSort (फ़िल्टर (>=x) xs)
</वाक्यविन्यास हाइलाइट>
कार्यान्वयन
सभी सूचीबद्ध कार्यान्वयन ओपन सोर्स लाइसेंस के अंतर्गत वितरित किए जाते हैं।[44] हास्केल 98 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में शामिल हैं:
- ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और एएनएसआई सी के लिए दो मध्यवर्ती भाषा ओं में से एक के माध्यम से संकलित करता है: सी-- , या हाल के संस्करणों में, एलएलवीएम (पूर्व में निम्न स्तरीय वर्चुअल मशीन) बिटकोड।[45][46] जीएचसी वास्तविक मानक हास्केल बोली बन गई है।[47] पुस्तकालय हैं (उदाहरण के लिए, ओपन जीएल के लिए बाइंडिंग) जो केवल जीएचसी के साथ काम करते हैं। जीएचसी को हास्केल मंच के साथ भी वितरित किया गया था।
- जेएचसी, जॉन मेचम द्वारा लिखित एक हास्केल संकलक, उत्पन्न कार्यक्रमों की गति और दक्षता पर जोर देता है और नए कार्यक्रम परिवर्तनों की खोज करता है।
- Ajhc Jhc का एक कांटा है।
- यूट्रेक्ट हास्केल कंपाइलर (यूएचसी) यूट्रेक्ट विश्वविद्यालय से हास्केल कार्यान्वयन है।[48] यह लगभग सभी हास्केल 98 सुविधाओं और कई प्रयोगात्मक एक्सटेंशन का समर्थन करता है। यह विशेषता व्याकरण का उपयोग करके कार्यान्वित किया जाता है और वर्तमान में ज्यादातर उत्पन्न प्रकार प्रणालियों और भाषा एक्सटेंशन पर शोध के लिए उपयोग किया जाता है।
कार्यान्वयन अब सक्रिय रूप से बनाए नहीं रखा जाता है इसमें शामिल हैं:
- हास्केल यूजर का गोफर सिस्टम (हग्स (दुभाषिया)) एक बाईटकोड दुभाषिया है। यह एक बार जीएचसी कंपाइलर के साथ सबसे व्यापक रूप से उपयोग किए जाने वाले कार्यान्वयन में से एक था,[49] लेकिन अब ज्यादातर जीएचसीआई द्वारा प्रतिस्थापित कर दिया गया है। यह एक ग्राफिक्स लाइब्रेरी के साथ भी आता है।
- एचबीसी हास्केल 1.4 का समर्थन करने वाला एक प्रारंभिक कार्यान्वयन है। यह लेनार्ट ऑगस्टसन द्वारा आलसी एमएल पर आधारित और लागू किया गया था। यह कुछ समय के लिए सक्रिय रूप से विकसित नहीं हुआ है।
- nhc98 मेमोरी उपयोग को कम करने पर ध्यान केंद्रित करने वाला एक बायटेकोड कंपाइलर है।
- यॉर्क हास्केल कंपाइलर (Yhc ) nhc98 का एक कांटा था, जिसका लक्ष्य सरल, अधिक पोर्टेबल और कुशल होना और हास्केल ट्रेसर हैट के लिए समर्थन को एकीकृत करना था। इसमें एक जावास्क्रिप्ट बैकएंड भी था, जिससे उपयोगकर्ता वेब ब्राउज़र में हास्केल प्रोग्राम चला सकते थे।
कार्यान्वयन पूरी तरह से हास्केल 98 के अनुरूप नहीं है, और एक प्रकार की हास्केल भाषा का उपयोग करते हुए इसमें शामिल हैं:
- एटा और फ्रीज जावा वर्चुअल मशीन को लक्षित करने वाली हास्केल की बोलियां हैं।
- गोफर (सॉफ्टवेयर ) हास्केल की एक शैक्षिक बोली थी, जिसमें मार्क जोन्स द्वारा विकसित कंस्ट्रक्टर क्लासेस नामक एक विशेषता थी। इसे हग्स (हास्केल यूजर के गोफर सिस्टम) द्वारा प्रतिस्थापित किया गया था।
- हीलियम, हास्केल की एक नई बोली। स्पष्ट त्रुटि संदेशों के माध्यम से सीखने को आसान बनाने पर ध्यान केंद्रित किया गया है। वर्तमान में इसमें टाइप क्लास के लिए पूर्ण समर्थन की कमी है, जो इसे कई हास्केल प्रोग्रामों के साथ असंगत बनाता है।
उल्लेखनीय अनुप्रयोग
- सबूत सहायक Agda (प्रोग्रामिंग भाषा) हास्केल में लिखा गया है।[50]
- कबाल (सॉफ्टवेयर) स्वचालन बनाएँ और हास्केल पुस्तकालयों और कार्यक्रमों की पैकेजिंग के लिए एक उपकरण है।[51]
- डार्क्स एक संशोधन नियंत्रण प्रणाली है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण।
- ग्लासगो हास्केल कंपाइलर भी अक्सर उन्नत कार्यात्मक प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है।
- Git-अनुबंध गिट संस्करण नियंत्रण के तहत (बड़ी) डेटा फ़ाइलों को प्रबंधित करने का एक उपकरण है। यह एक वितरित फ़ाइल तुल्यकालन प्रणाली (गिट-अनुबंध सहायक) भी प्रदान करता है।
- लिंस्पायर लिनक्स ने सिस्टम टूल्स डेवलपमेंट के लिए हास्केल को चुना।[52]
- पंडोक एक मार्कअप प्रारूप को दूसरे में बदलने का एक उपकरण है।
- पग (प्रोग्रामिंग) राकू (प्रोग्रामिंग भाषा) प्रोग्रामिंग लैंग्वेज (पूर्व में पर्ल 6) के लिए एक कंपाइलर और इंटरप्रेटर (कंप्यूटिंग) है।
- TidalCycles लाइव कोडिंग संगीत पैटर्न के लिए एक डोमेन विशेष भाषा है, जो हास्केल में सन्निहित है।[53]
- Xmonad एक्स विंडो सिस्टम के लिए एक खिड़की प्रबंधक है, जो पूरी तरह हास्केल में लिखा गया है।[54]
उद्योग
- ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, Bluespec, Inc. के उपकरण हास्केल में लागू किए गए हैं।
- क्रिप्टोग्राफी एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, क्रिप्टोल हास्केल में लागू किया गया है।
- फेसबुक अपने एंटी-स्पैम प्रोग्राम को लागू करता है[55] हास्केल में, अंतर्निहित डेटा एक्सेस लाइब्रेरी को खुला स्रोत सॉफ्टवेयर के रूप में बनाए रखना।[56]
- हास्केल में कार्डानो (ब्लॉकचैन प्लेटफॉर्म) लागू किया गया है।[57]
- GitHub ने सिमेंटिक (सॉफ़्टवेयर), हास्केल में अविश्वसनीय स्रोत कोड के विश्लेषण, अंतर और व्याख्या के लिए एक ओपन-सोर्स लाइब्रेरी लागू की।[58]
- मानक चार्टर्ड की वित्तीय मॉडलिंग भाषा म्यू सिंटैक्टिक हास्केल सख्त रनटाइम पर चल रही है।[59]
- seL4 , पहला औपचारिक तरीका microkernel ,[60] ओएस डेवलपर के लिए प्रोटोटाइप भाषा के रूप में हास्केल का इस्तेमाल किया।[60]: p.2 साथ ही, हास्केल कोड ने एक निष्पादन योग्य विनिर्देश को परिभाषित किया जिसके साथ प्रमेय-सिद्ध उपकरण द्वारा स्वचालित अनुवाद के लिए तर्क दिया गया।[60]: p.3 हास्केल कोड इस प्रकार अंतिम सी (प्रोग्रामिंग भाषा) शोधन से पहले एक मध्यवर्ती प्रोटोटाइप के रूप में कार्य करता है।[60]: p.3
- Target Corporation store' आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।[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.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 (8 June 2020), erkmos/haskell-companies, retrieved 22 June 2020
- ↑ 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 7 September 2021.
- ↑ "प्रोग्रामिंग लैंग्वेज इंडेक्स की 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, 15 October 2021, retrieved 16 October 2021
- ↑ "हास्केल कैबल". Retrieved 8 April 2015.
- ↑ "लिनस्पायर/फ्रीस्पायर कोर ओएस टीम और हास्केल". Debian Haskell mailing list. May 2006.
- ↑ "ज्वारीय चक्रों के साथ लाइव कोड | ज्वारीय चक्र". doc.tidalcycles.org (in English). Retrieved 19 January 2022.
- ↑ 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 18 March 2022.
- ↑ 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.
इस पेज में लापता आंतरिक लिंक की सूची
- अनुमान टाइप करें
- सामान्य प्रयोजन प्रोग्रामिंग भाषा
- प्रकार की सुरक्षा
- शब्दार्थ (कंप्यूटर विज्ञान)
- गूगल खोज
- खुला मानक
- कार्यात्मक भाषाएँ
- सख्त समारोह
- कक्षाएं टाइप करें
- सी (प्रोग्रामिंग भाषा)
- कार्रवाई के आदेश
- बहुरूपता टाइप करें
- अनाम समारोह
- गैर नियतात्मक एल्गोरिथम
- समवर्ती (कंप्यूटर विज्ञान)
- दुभाषिया (कंप्यूटिंग)
- मनमाना परिशुद्धता
- उट्रेच विश्वविद्यालय
- आलिंगन (दुभाषिया)
- कार्डानो (ब्लॉकचेन प्लेटफॉर्म)
- सिमेंटिक (सॉफ्टवेयर)
- स्टैंडर्ड चार्टर्ड
- औपचारिक तरीके
- वेब ढांचा
- सेवक (वेब फ्रेमवर्क)
- एपिग्राम (प्रोग्रामिंग भाषा)
- Agda (प्रमेय प्रमाण)
- एल्म (प्रोग्रामिंग भाषा)
- इदरीस (प्रोग्रामिंग भाषा)
- ह्यूम (प्रोग्रामिंग भाषा)
बाहरी कड़ियाँ
- No URL found. Please specify a URL here or add one to Wikidata.
- Official wiki
- Haskell Weekly
श्रेणी:अकादमिक प्रोग्रामिंग भाषाएं श्रेणी: हास्केल कोड के उदाहरण के साथ लेख श्रेणी: शैक्षिक प्रोग्रामिंग भाषाएं श्रेणी: कार्यात्मक भाषाएं श्रेणी:साक्षर प्रोग्रामिंग श्रेणी: पैटर्न मिलान प्रोग्रामिंग भाषाएं श्रेणी: 1990 में बनाई गई प्रोग्रामिंग भाषा श्रेणी:सांख्यिकीय रूप से टाइप की गई प्रोग्रामिंग भाषाएं