हास्केल

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

हास्केल का उपयोग अकादमिक और उद्योग में किया जाता है।  हास्केल ट्यूटोरियल के लिए गूगल खोजों द्वारा 28वीं सबसे लोकप्रिय प्रोग्रामिंग भाषा थी, और  गिट हब (GitHub) स्रोत कोड रिपॉजिटरी पर 1% से कम सक्रिय उपयोगकर्ता हैं।

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

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

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

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

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



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

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

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

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

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

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

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

कोड उदाहरण
एक Hello, World! हास्केल में कार्यक्रम (केवल अंतिम पंक्ति सख्ती से जरूरी है): module Main (main) where         -- not needed in interpreter, is the default in a module file

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

main = putStrLn "Hello, World!"

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

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

factorial n = if n < 2

then 1

else n * factorial (n - 1)

-- Using recursion (with pattern matching)

factorial 0 = 1

factorial n = n * factorial (n - 1)

-- Using recursion (with guards)

factorial n


 * n < 2    = 1


 * otherwise = n * factorial (n - 1)

-- Using a list and the "product" function

factorial n = product [1..n]

-- Using fold (implements "product")

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

-- Point-free style

factorial = foldr (*) 1. enumFromTo 1 जैसा कि पूर्णांक प्रकार में मनमाना-परिशुद्धता है, यह कोड मानों की गणना करेगा  (एक 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)

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

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

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

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

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

 * सबूत सहायक Agda (प्रोग्रामिंग भाषा)  हास्केल में लिखा गया है।
 * कबाल (सॉफ्टवेयर)  स्वचालन बनाएँ  और हास्केल पुस्तकालयों और कार्यक्रमों की पैकेजिंग के लिए एक उपकरण है।
 * डार्क्स एक  संशोधन नियंत्रण प्रणाली  है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण।
 * ग्लासगो हास्केल कंपाइलर भी अधिकांशतः उन्नत कार्यात्मक प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है।
 * Git-अनुबंध  गिट  संस्करण नियंत्रण के अनुसार (बड़ी) डेटा फ़ाइलों को प्रबंधित करने का एक उपकरण है। यह एक वितरित फ़ाइल तुल्यकालन प्रणाली (गिट-अनुबंध सहायक) भी प्रदान करता है।
 * लिंस्पायर लिनक्स ने सिस्टम टूल्स डेवलपमेंट के लिए हास्केल को चुना।
 * पंडोक एक मार्कअप प्रारूप को दूसरे में बदलने का एक उपकरण है।
 * पग (प्रोग्रामिंग)  राकू (प्रोग्रामिंग भाषा)  प्रोग्रामिंग भाषा (पूर्व में पर्ल 6) के लिए एक कंपाइलर और इंटरप्रेटर (कंप्यूटिंग) है।
 * TidalCycles लाइव कोडिंग संगीत पैटर्न के लिए एक डोमेन विशेष भाषा है, जो हास्केल में सन्निहित है।
 * Xmonad  एक्स विंडो सिस्टम  के लिए एक  खिड़की प्रबंधक  है, जो पूरी तरह हास्केल में लिखा गया है।

उद्योग

 * ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, Bluespec, Inc. के उपकरण हास्केल में लागू किए गए हैं।
 * क्रिप्टोग्राफी एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन,  क्रिप्टोल  हास्केल में लागू किया गया है।
 * फेसबुक अपने एंटी-स्पैम प्रोग्राम को लागू करता है हास्केल में, अंतर्निहित डेटा एक्सेस लाइब्रेरी को  खुला स्रोत सॉफ्टवेयर  के रूप में बनाए रखना।
 * हास्केल में कार्डानो (ब्लॉकचैन प्लेटफॉर्म) लागू किया गया है।
 * GitHub ने सिमेंटिक (सॉफ़्टवेयर), हास्केल में अविश्वसनीय स्रोत कोड के विश्लेषण, अंतर और व्याख्या के लिए एक ओपन-सोर्स लाइब्रेरी लागू की।
 * मानक चार्टर्ड की वित्तीय मॉडलिंग भाषा म्यू सिंटैक्टिक हास्केल सख्त रनटाइम पर चल रही है।
 * seL4, पहला औपचारिक तरीका microkernel , ओएस डेवलपर के लिए प्रोटोटाइप भाषा के रूप में हास्केल का उपयोग किया।  साथ ही, हास्केल कोड ने एक निष्पादन योग्य विनिर्देश को परिभाषित किया जिसके साथ प्रमेय-सिद्ध उपकरण द्वारा स्वचालित अनुवाद के लिए तर्क दिया गया।  हास्केल कोड इस प्रकार अंतिम सी (प्रोग्रामिंग भाषा) शोधन से पहले एक मध्यवर्ती प्रोटोटाइप के रूप में कार्य करता है।
 * Target Corporation store' आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।

वेब
हास्केल के लिए लिखे गए उल्लेखनीय वेब ढांचे में सम्मलित हैं:
 * आईएचपी (वेब ​​फ्रेमवर्क)
 * यसोड (वेब ​​फ्रेमवर्क)
 * नौकर (वेब ​​​​ढांचा)
 * स्नैप (वेब ​​फ्रेमवर्क)

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

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

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

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

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

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

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

सम्मेलन और कार्यशालाएं
हास्केल समुदाय अनुसंधान और विकास गतिविधियों के लिए नियमित रूप से मिलता है। मुख्य कार्यक्रम हैं:
 * कार्यात्मक प्रोग्रामिंग पर अंतर्राष्ट्रीय सम्मेलन (आईसीएफपी)
 * हास्केल संगोष्ठी (पूर्व में हास्केल कार्यशाला)
 * हास्केल कार्यान्वयन कार्यशाला
 * कार्यात्मक प्रोग्रामिंग के वाणिज्यिक उपयोगकर्ता (सीयूएफपी)

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

ग्रन्थसूची

 * Reports
 * Textbooks
 * (full text)
 * Tutorials
 * 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
 * History
 * (full text)
 * Tutorials
 * 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
 * History
 * Tutorials
 * 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
 * History
 * History
 * History
 * History

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

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

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

 * Official wiki
 * Haskell Weekly
 * Haskell Weekly