ट्रैक
/
Haskell
Haskell
/
अभ्यास
/
लूशियन की स्वादिष्ट लसानिया
लूशियन की स्वादिष्ट लसानिया

लूशियन की स्वादिष्ट लसानिया

सीखने का अभ्यास

परिचय

स्थिरांक और फंक्शन

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 कोड की सीमाएँ तय करने के लिए व्हाइटस्पेस और इंडेंटेशन का उपयोग करता है। जो कोड किसी एक्सप्रेशन का हिस्सा है, उसे उस एक्सप्रेशन की शुरुआत से ज़्यादा अंदर की ओर इंडेंट किया जाना चाहिए।

  • मॉड्यूल, import और टॉप-लेवल फंक्शन की परिभाषाएँ सबसे बाईं ओर वाले कॉलम से शुरू होनी चाहिए।
  • अगर किसी एक्सप्रेशन को कई लाइनों में बाँटा गया है, तो उस एक्सप्रेशन का हिस्सा बने कोड को उस एक्सप्रेशन के नीचे कम से कम एक स्पेस से इंडेंट किया जाना चाहिए।
  • एक्सप्रेशन के जो हिस्से एक साथ रखे जाते हैं, उन्हें बराबर संख्या के स्पेस से इंडेंट किया जाना चाहिए।
-- 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 के अंतर्गत आता है।

निर्देश

इस अभ्यास में आप कुछ कोड लिखेंगे, जो आपकी पसंदीदा पकाने की किताब से एक शानदार लसैग्ना पकाने में आपकी मदद करेगा।

आपके सामने तीन काम हैं, और तीनों लसैग्ना पकाने में लगने वाले समय से जुड़े हैं।

1. ओवन का अपेक्षित समय मिनटों में तय कीजिए

expectedMinutesInOven कॉन्स्टेंट बनाइए, जिससे पता चले कि लसैग्ना को ओवन में कितने मिनट रहना चाहिए। पकाने की किताब के अनुसार ओवन में लगने वाला अपेक्षित समय 40 मिनट है:

expectedMinutesInOven
    --> 40

2. मिनटों में तैयारी का समय निकालिए

preparationTimeInMinutes फंक्शन बनाइए। यह फंक्शन पैरामीटर के रूप में लसैग्ना में डाली गई परतों की संख्या लेता है और लौटाता है कि लसैग्ना तैयार करने में आपने कितने मिनट लगाए, यह मानते हुए कि हर परत तैयार करने में आपको 2 मिनट लगते हैं।

preparationTimeInMinutes 3
    --> 6

3. मिनटों में बीता हुआ समय निकालिए

elapsedTimeInMinutes फंक्शन बनाइए, जो दो पैरामीटर लेता है: पहला पैरामीटर लसैग्ना में डाली गई परतों की संख्या है, और दूसरा पैरामीटर वह समय है जो लसैग्ना ने ओवन में बिताया है। फंक्शन को लौटाना चाहिए कि लसैग्ना पकाने पर आपने कितने मिनट काम किया, यानी तैयारी के मिनटों और उस समय के मिनटों का जोड़, जो लसैग्ना ने उस पल तक ओवन में बिताया है।

elapsedTimeInMinutes 3 20
    --> 26
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Haskell Exercism

लूशियन की स्वादिष्ट लसानिया शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।