Haskell प्रोग्राम परिभाषाओं और एक्सप्रेशन से बने होते हैं।
एक स्थिरांक वैल्यू name = expression से परिभाषित की जाती है।
five = 5
six = 3 + 3
फंक्शन name parameters... = expression से परिभाषित किए जाते हैं। इनमें पैरामीटर को सिर्फ स्पेस से अलग किया जाता है।
add number1 number2 = number1 + number2
किसी फंक्शन को कॉल करना भी एक एक्सप्रेशन होता है। इसमें उसका नाम लिखा जाता है और फंक्शन के हर पैरामीटर के लिए आर्गुमेंट दिए जाते हैं, जिन्हें स्पेस से अलग किया जाता है। यह ठीक वैसा ही है जैसा फंक्शन परिभाषित करते समय किया जाता है।
five = add 2 3
गोल ब्रैकेट लगाकर यह तय किया जा सकता है कि किसी एक्सप्रेशन का मूल्यांकन किस क्रम में होगा।
six = add 2 (1 * 4)
twelve = add 2 1 * 4
Haskell कोड की सीमाएँ तय करने के लिए व्हाइटस्पेस और इंडेंटेशन का उपयोग करता है। जो कोड किसी एक्सप्रेशन का हिस्सा है, उसे उस एक्सप्रेशन की शुरुआत से ज़्यादा अंदर की ओर इंडेंट किया जाना चाहिए।
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
number1 + number2
https://en.wikibooks.org/wiki/Haskell/Indentation
मॉड्यूल फंक्शन एक्सपोर्ट करते हैं। इसका मतलब है कि आप उन फंक्शन का उपयोग कर सकते हैं जिन्हें मॉड्यूल अपने एक्सपोर्ट स्टेटमेंट में उपलब्ध कराता है। एक मॉड्यूल ऐसे फंक्शन भी बना सकता है जो सिर्फ अंदरूनी उपयोग के लिए हों। डिफॉल्ट रूप से, जो फंक्शन साफ़-साफ़ एक्सपोर्ट नहीं किए गए हैं, उनका उपयोग मॉड्यूल के बाहर से नहीं किया जा सकता।
मॉड्यूल की शुरुआत में हम मॉड्यूल का नाम लिखते हैं। अगर हमारे पास Calculator.hs नाम की फाइल है, तो हमें अपने मॉड्यूल का नाम Calculator रखना चाहिए। फिर हम बताते हैं कि यह कौन-कौन से फंक्शन एक्सपोर्ट करता है, और उसके बाद हम फंक्शन लिखना शुरू कर सकते हैं। तो हम इसी से शुरू करेंगे।
module Calculator ( add ) where
https://learnyouahaskell.github.io/modules#making-our-own-modules
कमेंट Haskell फाइल के अंदर लिखा वह टेक्स्ट होता है जिसे कोड के रूप में नहीं समझा जाता।
यह मुख्य रूप से आपके और दूसरे प्रोग्रामर के पढ़ने के लिए होता है।
सिंगल लाइन कमेंट के लिए एक आसान सिंटैक्स है, जो दो डैश पर आधारित है।
मल्टीलाइन कमेंट खोलने और बंद करने वाले डेलिमिटर {- और -} की जोड़ी से भी लिखे जा सकते हैं।
-- a single line comment
-- another single line comment
{- a multiline comment
spanning multiple lines
-}
अभ्यास का यह परिचय Learn You a Haskell for Great Good! से काफी कुछ लेता है और Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License के अंतर्गत आता है।
इस अभ्यास में आप कुछ कोड लिखेंगे, जो आपकी पसंदीदा पकाने की किताब से एक शानदार लसैग्ना पकाने में आपकी मदद करेगा।
आपके सामने तीन काम हैं, और तीनों लसैग्ना पकाने में लगने वाले समय से जुड़े हैं।
expectedMinutesInOven कॉन्स्टेंट बनाइए, जिससे पता चले कि लसैग्ना को ओवन में कितने मिनट रहना चाहिए। पकाने की किताब के अनुसार ओवन में लगने वाला अपेक्षित समय 40 मिनट है:
expectedMinutesInOven
--> 40
preparationTimeInMinutes फंक्शन बनाइए। यह फंक्शन पैरामीटर के रूप में लसैग्ना में डाली गई परतों की संख्या लेता है और लौटाता है कि लसैग्ना तैयार करने में आपने कितने मिनट लगाए, यह मानते हुए कि हर परत तैयार करने में आपको 2 मिनट लगते हैं।
preparationTimeInMinutes 3
--> 6
elapsedTimeInMinutes फंक्शन बनाइए, जो दो पैरामीटर लेता है: पहला पैरामीटर लसैग्ना में डाली गई परतों की संख्या है, और दूसरा पैरामीटर वह समय है जो लसैग्ना ने ओवन में बिताया है। फंक्शन को लौटाना चाहिए कि लसैग्ना पकाने पर आपने कितने मिनट काम किया, यानी तैयारी के मिनटों और उस समय के मिनटों का जोड़, जो लसैग्ना ने उस पल तक ओवन में बिताया है।
elapsedTimeInMinutes 3 20
--> 26
Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।