हास्केल
हास्केल (/ˈhæskəl/[25]) सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषा है। जिसका सामान्य-उद्देश्य, स्थिर टाइपिंग या स्थैतिक रूप से टाइप की गई, प्रकार अनुमान और मूल्यांकन के साथ विशुद्ध रूप से फंक्शनल प्रोग्रामिंग प्रोग्रामिंग भाषा में प्रोग्राम करना हैं।[26][27] शिक्षण, अनुसंधान और औद्योगिक अनुप्रयोगों के लिए इसे डिज़ाइन किया गया, हास्केल ने कई प्रोग्रामिंग भाषाओं की सुविधाओं को प्रदान किया है जैसे कि वर्ग टाइप करें , जो टाइप करने की सुरक्षा को सक्षम बनाता हैं। टाइप-सेफऑपरेटर ओवरलोडिंग , और मोनाड (फंक्शनल प्रोग्रामिंग) इनपुट/आउटपुट के लिए बहुत उपयोगी हैं। हास्केल का मुख्य कार्यान्वयन ग्लासगो हास्केल कंपाइलर (जीएचसी) है। इसका नाम तर्क विद्वान हास्केल करी के नाम पर रखा गया है।[1] हास्केल के सिमेंटिक्स (कंप्यूटर विज्ञान) को ऐतिहासिक रूप से मिरांडा (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा पर आधारित हैं, जो प्रारंभिक हास्केल वर्किंग ग्रुप के प्रयासों पर ध्यान केंद्रित करने के लिए कार्य करता था।[28] भाषा का अंतिम औपचारिक विनिर्देश जुलाई 2010 में बनाया गया था, जबकि जीएचसी का विकास भाषा के विस्तार के माध्यम से हास्केल का विस्तार करना जारी रखता है।
हास्केल का उपयोग अकादमिक और उद्योग में किया जाता है।[29][30][31] As of May 2021[update] हास्केल ट्यूटोरियल के लिए गूगल खोजों द्वारा 28वीं सबसे लोकप्रिय प्रोग्रामिंग भाषा थी,[32] और गिट हब (GitHub) स्रोत कोड रिपॉजिटरी पर 1% से कम सक्रिय उपयोगकर्ता हैं।[33]
इतिहास
1985 में रिसर्च सॉफ्टवेयर लिमिटेड द्वारा मिरांडा (प्रोग्रामिंग भाषा) जारी करने के बाद फंक्शनल भाषाओं में रुचि बढ़ी। 1987 तक, एक दर्जन से अधिक गैर-सख्त कार्य, विशुद्ध रूप से फंक्शनल प्रोग्रामिंग भाषाएं सम्मलित थीं। मिरांडा सबसे व्यापक रूप से उपयोग किया गया था, लेकिन यह मालिकाना सॉफ्टवेयर था। पोर्टलैंड, ओरेगॉन में फंक्शनल प्रोग्रामिंग भाषाएं और कंप्यूटर वास्तुकला (FPCA '87) पर सम्मेलन में, एक मजबूत सहमति थी कि ऐसी भाषाओं के लिए खुले मानक को परिभाषित करने के लिए समिति का गठन किया जाए। इस समिति का उद्देश्य फंक्शनल-भाषा डिजाइन में भविष्य के शोध के आधार के रूप में कार्य करने के लिए सम्मलित फंक्शनल भाषाओं को सरल भाषा में समावेशित करना था।[34]
हास्केल 1.0 से 1.4
हास्केल को एक समिति द्वारा विकसित किया गया था, जहां संभव हो वहां शेल्फ समाधानों को एक साथ लाने का प्रयास किया गया था।
इसमें कुछ प्रकार की कक्षाएं, जो इसकी सुरक्षा को सक्षम करती हैं। इन प्रकार के सुरक्षित ऑपरेटर ओवरलोडिंग, पहली बार फिलिप वाडलर और स्टीफन ब्लॉट द्वारा समानता से हर प्रकारों के तदर्थ संचालन और उस समय भाषाओं में अंकगणितीय अधिभार को संबोधित करने के लिए प्रस्तावित किया गया था।[35]
हास्केल के प्रारंभिक संस्करणों में संस्करण 1.2 तक और इसमें सम्मलित हैं, उपयोगकर्ता इंटरैक्शन और आईओ (इनपुट और आउटपुट) दोनों स्ट्रीम आधारित और निरंतरता आधारित तंत्र द्वारा नियंत्रित किए गए थे जिन्हें व्यापक रूप से असंतोषजनक माना जाता था।[36] संस्करण 1.3 में, मोनाड_ (फंक्शनल_प्रोग्रामिंग) आईओ को टाइप क्लास के सामान्यीकरण के साथ-साथ उच्च प्रकार (टाइप कन्स्ट्रक्टर) के साथ पेश किया गया था। नोटेशन के साथ, जो मोनाड टाइप क्लास के लिए सिंटैक्टिक चीनी प्रदान करता है, इसने हास्केल को एक प्रभाव प्रणाली दी जो रेफरेंसियल पारदर्शिता बनाए रखती थी और सुविधाजनक थी।
प्रारंभिक संस्करणों में अन्य उल्लेखनीय परिवर्तन 'सीक्वेंस (seq)' फ़ंक्शन के दृष्टिकोण थे, जो मूल्यों के बीच डेटा निर्भरता बनाता है, और अत्यधिक मेमोरी खपत से बचने के लिए इन भाषाओं में इसका उपयोग किया जाता है, रिफैक्टरिंग को और अधिक व्यावहारिक बनाने के लिए इसे सभी वर्गों से इसके मानक कार्यों में उपयोग किए जाने लगा था।
हास्केल (हास्केल 1.0) का पहला संस्करण 1990 में परिभाषित किया गया था।[1] समिति के प्रयासों के परिणामस्वरूप भाषा परिभाषाओं की एक श्रृंखला (1.0, 1.1, 1.2, 1.3, 1.4) हुई।
हास्केल 98
1997 के अंत में, हास्केल 98 में श्रृंखला समाप्त हुई, जिसका उद्देश्य भाषा के स्थिर, न्यूनतम, पोर्टेबल संस्करण और शिक्षण के लिए एक मानक लाइब्रेरी (कंप्यूटर विज्ञान) और भविष्य के विस्तार के लिए आधार के रूप में निर्दिष्ट करना था। समिति ने प्रायोगिक सुविधाओं को जोड़कर और सम्मलित करके हास्केल 98 के एक्सटेंशन और वेरिएंट बनाने का स्पष्ट रूप से स्वागत किया।[34]
फरवरी 1999 में, हास्केल 98 भाषा मानक को मूल रूप से द हास्केल 98 रिपोर्ट के रूप में प्रकाशित किया गया था।[34] जनवरी 2003 में, हास्केल 98 भाषा और लाइब्रेरी: संशोधित रिपोर्ट के रूप में एक संशोधित संस्करण प्रकाशित किया गया था।[27] भाषा तेजी से विकसित हो रही है, ग्लासगो हास्केल कंपाइलर (जीएचसी) कार्यान्वयन वर्तमान वास्तविक मानक का प्रतिनिधित्व करता है।[37]
हास्केल 2010
2006 के प्रारंभ में, हास्केल 98 मानक के उत्तराधिकारी को परिभाषित करने की प्रक्रिया शुरू हुई, जिसे अनौपचारिक रूप से हास्केल प्राइम नाम दिया गया।[38] यह भाषा की परिभाषा को संशोधित करने के लिए सतत वृद्धिशील प्रक्रिया थी, जो प्रति वर्ष नये संशोधन के लिए तैयार करती थी। हास्केल 2010 नाम का पहला संशोधन नवंबर 2009 में घोषित किया गया था[2]और जुलाई 2010 में इसे प्रकाशित किया गया था।
हास्केल 2010 भाषा के लिए वृद्धिशील अद्यतन है, जिसमें अधिकतम अच्छी तरह से उपयोग की जाने वाली और गैर-विवादास्पद विशेषताएं सम्मलित हैं जो पहले संकलक-विशिष्ट झंडे के माध्यम से सक्षम थीं।
- पदानुक्रमित मॉड्यूल के नामों को केवल ऐसे पहचानकर्ता के अतिरिक्त पूंजीकृत पहचानकर्ताओं के डॉट-पृथक अनुक्रमों को सम्मलित करने की अनुमति दी गई है। यह मॉड्यूल को पदानुक्रमित तरीके से नामित करने देता है (उदाहरण के लिए,
Data.Listके अतिरिक्तList), चूंकि तकनीकी रूप से मॉड्यूल अभी भी मोनोलिथिक नेमस्पेस में हैं। यह एक्सटेंशन हास्केल 98 के परिशिष्ट में निर्दिष्ट किया गया था और व्यवहार में सार्वभौमिक रूप से उपयोग किया गया था। - विदेशी फ़ंक्शन इंटरफ़ेस (FFI) अन्य प्रोग्रामिंग भाषाओं के लिए बाइंडिंग की अनुमति देता है। रिपोर्ट में केवल C (प्रोग्रामिंग भाषा) के लिए बाइंडिंग निर्दिष्ट हैं, लेकिन डिज़ाइन अन्य भाषा बाइंडिंग के लिए अनुमति देता है। इसका समर्थन करने के लिए, डेटा प्रकार की घोषणाओं में कोई कंस्ट्रक्टर नहीं होने की अनुमति दी गई थी, जो हास्केल में निर्मित नहीं किए जा सकने वाले विदेशी डेटा के लिए मजबूत गैर प्रकार को सक्षम करता है। यह एक्सटेंशन पहले हास्केल 98 रिपोर्ट के परिशिष्ट में निर्दिष्ट किया गया था और व्यापक रूप से उपयोग किया गया था।
- तथाकथित एन + के पैटर्न (फॉर्म की परिभाषाएं
fact (n+1) = (n+1) * fact n) की अनुमति नहीं थी। इस सिंटैक्टिक चीनी में भ्रामक शब्दार्थ था, जिसमें कोड ऐसा दिखता था जैसे इसका उपयोग किया गया हो(+)ऑपरेटर, लेकिन वास्तव में कोड का उपयोग करने के लिए desugared(-)और(>=). - प्रकार के अनुमान के नियमों में ढील दी गई जिससे कि अधिक कार्यक्रमों को जाँचने की अनुमति मिल सके।
- कुछ सिंटेक्स (प्रोग्रामिंग भाषाएं) विवाद (औपचारिक व्याकरण में परिवर्तन) तय किए गए थे: पैटर्न गार्ड जोड़े गए थे, जिससे गार्ड के भीतर पैटर्न का मेल हो सके, इसके संचालन के आदेश का संकल्प सरल विधियों से निर्दिष्ट किया गया था जो वास्तविकता में इसके अभ्यास को दर्शाता है, ऑपरेटरों और टिप्पणियों की भाषा के शाब्दिक वाक्य की रचना के लिए की जाने वाली बातचीत में बढ़त बनाने की स्थिति को संबोधित किया गया था, और अनपेक्षित सिंटैक्स त्रुटियों को खत्म करने के लिए do-notation और if-then-else को ट्वीक किया गया था।
LANGUAGEE> निर्देश (प्रोग्रामिंग) निर्दिष्ट किया गया था। 2010 तक, भाषा के विस्तार होने के व्यापक उपयोग किए जाने लगे थे, और जीएचसी (अन्य संकलकों के बीच) ने यह प्रदान किया किLANGUAGEpragma पहचानकर्ताओं की सूची के साथ अलग-अलग एक्सटेंशन निर्दिष्ट करने में उत्कृष्ट हो सके। समर्थन करने के लिए हास्केल 2010 कंपाइलर्स की आवश्यकता होती है,Haskell2010एक्सटेंशन और कई अन्य लोगों का समर्थन करने के लिए इसे प्रोत्साहित किया जाता है, जो हास्केल 2010 में जोड़े गए एक्सटेंशन के अनुरूप हैं।
भविष्य के मानक
2020 के लिए अगले औपचारिक विनिर्देश की योजना बनाई गई थी।[3]29 अक्टूबर 2021 को जीएचसी संस्करण 9.2.1 के साथ, जीएचसी2021 एक्सटेंशन जारी किया गया था। चूंकि यह एक औपचारिक भाषा युक्ति नहीं है, यह हास्केल 2010 में कई स्थिर, व्यापक रूप से उपयोग किए जाने वाले जीएचसी एक्सटेंशन को जोड़ती है।[39]
सुविधाएँ
हास्केल में मूल्यांकन, अन-नोन फ़ंक्शन, पैटर्न मिलान, सूची समझ , प्रकार वर्ग और प्रकार बहुरूपता सम्मलित हैं। यह विशुद्ध रूप से फंक्शनल भाषा है, जिसका अर्थ है कि कार्यों का सामान्यतः कोई साइड इफेक्ट (कंप्यूटर विज्ञान) नहीं होता है। साइड इफेक्ट्स का प्रतिनिधित्व करने के लिए ऑर्थोगोनल कंप्यूटर विज्ञान कार्यों के प्रकार के लिए एक अलग निर्माण सम्मलित है। शुद्ध कार्य एक दुष्प्रभाव वापस कर सकता है जिसे बाद में निष्पादित किया जाता है, शुद्ध कार्य अन्य भाषाओं के अशुद्ध कार्यों को मॉडलिंग करता है।
हास्केल के पास दृढ़ता से टाइप की गई प्रोग्रामिंग भाषा है, स्टैटिक टाइप स्टेटिक टाइपिंग टाइप सिस्टम हिंडले-मिलनर प्रकार के अनुमान पर आधारित है। इस क्षेत्र में इसका प्रमुख नवाचार प्रकार वर्ग है, मूल रूप से भाषा में बहुरूपता (कंप्यूटर विज्ञान) को जोड़ने के लिए एक सैद्धांतिक तरीके के रूप में माना जाता है,[40] लेकिन कई और उपयोग खोजने के बाद से।[41] निर्माण जो साइड-इफेक्ट्स का प्रतिनिधित्व करता है, एक मोनाड (फंक्शनल प्रोग्रामिंग) का उदाहरण है: सामान्य ढांचा जो विभिन्न संगणनाओं को मॉडल कर सकता है जैसे कि त्रुटि से निपटने, गैर-नियतात्मक एल्गोरिथ्म, पदच्छेद और सॉफ्टवेयर लेनदेन स्मृति उन्हें साधारण डेटाटाइप्स के रूप में परिभाषित किया गया है, लेकिन हास्केल उनके उपयोग के लिए कुछ सिंटैक्टिक सुगर प्रदान करता है।
हास्केल का एक ओपन सोर्स प्रकाशित विनिर्देश और कार्यान्वयन भाषा हैं,[27]। इसका मुख्य कार्यान्वयन, ग्लासगो हास्केल संकलक (जीएचसी), इंटरप्रेटर (कंप्यूटिंग) और मशीन कोड या नेटिव-कोड कंपाइलर दोनों में किया जाता है जो अधिकांश प्लेटफॉर्म पर रन होती हैं। जीएचसी अपने समृद्ध प्रकार की प्रणाली के लिए विख्यात है, जिसमें सामान्यीकृत बीजगणितीय डेटा प्रकार और प्रकार परिवारों जैसे हाल के नवाचारों को सम्मलित किया गया, कंप्यूटर भाषा बेंचमार्क गेम कॉन्करेंसी (कंप्यूटर साइंस) और समानांतर कंप्यूटिंग के अपने उच्च-प्रदर्शन कार्यान्वयन पर भी प्रकाश डालता है।[42]
यह एक सक्रिय, बढ़ता हुआ समुदाय भाषा के आसपास सम्मलित है, और ऑनलाइन पैकेज रिपॉजिटरी हैकेज में 5,400 से अधिक तृतीय-पक्ष ओपन-सोर्स लाइब्रेरी और टूल उपलब्ध हैं।[43]
कोड उदाहरण
एक Hello, World! प्रोग्राम हास्केल में इस प्रकार लिखा जाएगा (केवल अंतिम पंक्ति सख्ती से जरूरी है):
module Main (main) जहां द्विभाषिया स्थिति में इसकी आवश्यकता नहीं है, मॉड्यूल फ़ाइल में डिफ़ॉल्ट है
main :: IO () -- संकलक इस प्रकार की परिभाषा का अनुमान लगा सकता है
main = putStrLn "Hello, World!"
हास्केल में फैक्टोरियल फ़ंक्शन, कुछ अलग तरीकों से परिभाषित किया गया है (पहली पंक्ति हस्ताक्षर टाइप करें है, जो वैकल्पिक है और प्रत्येक कार्यान्वयन के लिए समान है):
factorial :: (Integral a) => a -> a
-- Using recursion (with the "ifthenelse" expression)
factorial n = if n < 2
then 1
else n * factorial (n - 1)
-- Using recursion (with pattern matching)
factorial 0 = 1
factorial n = n * factorial (n - 1)
-- Using recursion (with guards)
factorial n
| n < 2 = 1
| otherwise = n * factorial (n - 1)
-- Using a list and the "product" function
factorial n = product [1..n]
-- Using fold (implements "product")
factorial n = foldl (*) 1 [1..n]
-- Point-free style
factorial = foldr (*) 1 . enum FromTo 1
जैसा कि पूर्णांक प्रकार में मनमाना-परिशुद्धता है, यह कोड मानों की गणना करेगा factorial 100000 (एक 456,574-अंकों की संख्या), इस प्रकार सटीकता की कोई हानि नहीं होती हैं।त्वरित सॉर्ट ओवर सूचियों के समान एल्गोरिथ्म का कार्यान्वयन, जहां पहले तत्व को धुरी के रूप में लिया जाता है:
-- Type annotation (optional, same for each implementation)
quickSort :: Ord a => [a] -> [a]
-- Using list comprehensions
quickSort [] = [] -- The empty list is already sorted
quickSort (x:xs) = quickSort [a | a <- xs, a < x] -- Sort the left part of the list
++ [x] ++ -- Insert pivot between two sorted parts
quickSort [a | a <- xs, a >= x] -- Sort the right part of the list
-- Using filter
quickSort [] = []
quickSort (x:xs) = quickSort (filter (<x) xs)
++ [x] ++
quickSort (filter (>=x) xs)
कार्यान्वयन
सभी सूचीबद्ध कार्यान्वयन ओपन सोर्स लाइसेंस के अंतर्गत वितरित किए जाते हैं।[44]
हास्केल 98 मानक का पूरी तरह या लगभग अनुपालन करने वाले कार्यान्वयन में सम्मलित हैं:
- ग्लासगो हास्केल कंपाइलर (जीएचसी) कई अलग-अलग प्रोसेसर आर्किटेक्चर पर मूल कोड और एएनएसआई सी के लिए दो मध्यवर्ती भाषाओं में से एक माध्यम से इसे संकलित करता है: C-- , या हाल के संस्करणों में, एलएलवीएम (पूर्व में निम्न स्तरीय वर्चुअल मशीन) बिटकोड का उपयोग किया जाता हैं।[45][46] जीएचसी का वास्तविक मानक हास्केल भाषा बन गई है।[47] इसकी एक लाइब्रेरी हैं (उदाहरण के लिए, ओपन जीएल के लिए बाइंडिंग) जो केवल जीएचसी के साथ कार्य करती हैं। जीएचसी को हास्केल मंच के साथ भी वितरित किया गया था।
- जेएचसी, जॉन मेचम द्वारा लिखित हास्केल संकलक, उत्पन्न कार्यक्रमों की गति और दक्षता पर जोर देता है और नए कार्यक्रम परिवर्तनों की खोज करता है।
- Ajhc Jhc का एक कांटा है।
- यूट्रेक्ट हास्केल कंपाइलर (यूएचसी) यूट्रेक्ट विश्वविद्यालय से हास्केल कार्यान्वयन है।[48] यह लगभग सभी हास्केल 98 सुविधाओं और कई प्रयोगात्मक एक्सटेंशन का समर्थन करता है। यह विशेषता व्याकरण का उपयोग करके कार्यान्वित किया जाता है और वर्तमान में अधिकतम उत्पन्न प्रकार प्रणालियों और भाषा एक्सटेंशन पर शोध के लिए उपयोग किया जाता है।
कार्यान्वयन अब सक्रिय रूप से बनाए नहीं रखा जाता है इसमें सम्मलित हैं:
- हास्केल यूजर का गोफर सिस्टम (हग्स (द्विभाषिया)) बाईटकोड द्विभाषिया है। यह एक बार जीएचसी कंपाइलर के साथ सबसे व्यापक रूप से उपयोग किए जाने वाले कार्यान्वयन में से एक था,[49] लेकिन अब अधिकतम जीएचसीआई द्वारा प्रतिस्थापित कर दिया गया है। यह ग्राफिक्स लाइब्रेरी के साथ भी आता है।
- एचबीसी हास्केल 1.4 का समर्थन करने वाला एक प्रारंभिक कार्यान्वयन है। यह लेनार्ट ऑगस्टसन द्वारा एमएल पर आधारित करके इसे लागू किया गया था। यह कुछ समय के लिए सक्रिय रूप से विकसित नहीं हुआ है।
- एनएचसी98 मेमोरी उपयोग को कम करने पर ध्यान केंद्रित करने वाला बायटेकोड कंपाइलर है।
- यॉर्क हास्केल कंपाइलर (Yhc ) एनएचसी98 का एक कांटा था, जिसका लक्ष्य सरल, अधिक पोर्टेबल और कुशल होना और हास्केल ट्रेसर हैट के लिए समर्थन को एकीकृत करना था। इसमें एक जावास्क्रिप्ट बैकएंड भी था, जिससे उपयोगकर्ता वेब ब्राउज़र में हास्केल प्रोग्राम चला सकते थे।
कार्यान्वयन पूरी तरह से हास्केल 98 के अनुरूप नहीं है, और इस प्रकार की हास्केल भाषा का उपयोग करते हुए इसमें सम्मलित हैं:
- एटा और फ्रीज जावा वर्चुअल मशीन को लक्षित करने वाली हास्केल की बोलियां हैं।
- गोफर (सॉफ्टवेयर ) हास्केल की एक शैक्षिक भाषा थी, जिसमें मार्क जोन्स द्वारा विकसित कंस्ट्रक्टर क्लासेस नामक एक विशेषता थी। इसे हग्स (हास्केल यूजर के गोफर सिस्टम) द्वारा प्रतिस्थापित किया गया था।
- हीलियम, हास्केल की नई भाषा हैं। स्पष्ट त्रुटियों को संदेशों के माध्यम से सीखने को सरल बनाने पर ध्यान केंद्रित किया गया है। वर्तमान में इसमें टाइप क्लास के लिए पूर्ण समर्थन की कमी है, जो इसे कई हास्केल प्रोग्रामों के साथ असंगत बनाता है।
उल्लेखनीय अनुप्रयोग
- सबूत सहायक Agda (प्रोग्रामिंग भाषा) हास्केल में लिखा गया है।[50]
- कबाल (सॉफ्टवेयर) स्वचालन बनाएँ और हास्केल लाइब्रेरीों और कार्यक्रमों की पैकेजिंग के लिए एक उपकरण है।[51]
- डार्क्स संशोधन नियंत्रण प्रणाली है जिसे हास्केल में लिखा गया है, जिसमें कई नवीन विशेषताएं हैं, जैसे लागू करने के लिए पैच का अधिक सटीक नियंत्रण।
- ग्लासगो हास्केल कंपाइलर भी अधिकांशतः उन्नत फंक्शनल प्रोग्रामिंग सुविधाओं और अन्य प्रोग्रामिंग भाषाओं में अनुकूलन के लिए एक परीक्षण है।
- Git-अनुबंध गिट संस्करण नियंत्रण के अनुसार (बड़ी) डेटा फ़ाइलों को प्रबंधित करने का उपकरण है। यह वितरण फ़ाइल तुल्यकालन प्रणाली (गिट-अनुबंध सहायक) भी प्रदान करता है।
- लिंस्पायर लिनक्स ने सिस्टम टूल्स डेवलपमेंट के लिए हास्केल को चुना।[52]
- पंडोक मार्कअप प्रारूप को दूसरे में बदलने का उपकरण है।
- पग (प्रोग्रामिंग) राकू (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा (पूर्व में पर्ल 6) के लिए कंपाइलर और इंटरप्रेटर (कंप्यूटिंग) है।
- टीइडल साइकिल्स लाइव कोडिंग संगीत के पैटर्न के लिए एक डोमेन बनाने वाली विशेष भाषा है, जो हास्केल में सन्निहित है।[53]
- एक्स मोनेड एक्स विंडो सिस्टम के लिए खिड़की प्रबंधक है, जो पूरी तरह हास्केल में लिखा गया है।[54]
उद्योग
- ब्लूस्पेक, इंक. सिस्टम वेरिलॉग (बीएसवी) सेमीकंडक्टर डिज़ाइन के लिए एक भाषा है जो हास्केल का विस्तार है। साथ ही, ब्लूजपेक इंक के उपकरण हास्केल में लागू किए गए हैं।
- क्रिप्टोग्राफी एल्गोरिदम के विकास और सत्यापन के लिए एक भाषा और टूलचेन, क्रिप्टोल हास्केल में लागू किया गया है।
- फेसबुक अपने एंटी-स्पैम प्रोग्राम को लागू करता है[55] हास्केल में, अंतर्निहित डेटा एक्सेस लाइब्रेरी को खुला स्रोत सॉफ्टवेयर के रूप में बनाए रखना।[56]
- हास्केल में कार्डानो (ब्लॉकचैन प्लेटफॉर्म) लागू किया गया है।[57]
- GitHub ने सिमेंटिक (सॉफ़्टवेयर), हास्केल में अविश्वसनीय स्रोत कोड के विश्लेषण, अंतर और व्याख्या के लिए एक ओपन-सोर्स लाइब्रेरी लागू की।[58]
- मानक चार्टर्ड की वित्तीय मॉडलिंग भाषा म्यू सिंटैक्टिक हास्केल सख्त रनटाइम पर चल रही है।[59]
- seL4 , पहला औपचारिक तरीका microkernel ,[60] ओएस डेवलपर के लिए प्रोटोटाइप भाषा के रूप में हास्केल का उपयोग किया।[60]: p.2 साथ ही, हास्केल कोड ने एक निष्पादन योग्य विनिर्देश को परिभाषित किया जिसके साथ प्रमेय-सिद्ध उपकरण द्वारा स्वचालित अनुवाद के लिए तर्क दिया गया।[60]: p.3 हास्केल कोड इस प्रकार अंतिम सी (प्रोग्रामिंग भाषा) शोधन से पहले एक मध्यवर्ती प्रोटोटाइप के रूप में कार्य करता है।[60]: p.3
- टार्गेट कोर्पोरेशन स्टोर आपूर्ति श्रृंखला अनुकूलन सॉफ्टवेयर हास्केल में लिखा गया है।[61]
वेब
हास्केल के लिए लिखे गए उल्लेखनीय वेब फ्रेमवर्क में सम्मलित हैं:[62]