ট্র্যাক
/
Elm
Elm
/
অনুশীলনী
/
লুসিয়ানের সুস্বাদু লাসাগনা
লুসিয়ানের সুস্বাদু লাসাগনা

লুসিয়ানের সুস্বাদু লাসাগনা

লার্নিং অনুশীলনী

ভূমিকা

বেসিক ১

কনস্ট্যান্ট ও ফাংশন

একটি কনস্ট্যান্ট মান name = expression দিয়ে ডিফাইন করা হয়, যেখানে Elm-এ ডেফিনিশন ছাড়া অন্য সবকিছুই এক্সপ্রেশন।

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

ইন্ডেন্টেশন / সিগনিফিক্যান্ট হোয়াইটস্পেস

Elm কোডের সীমা নির্দিষ্ট করতে কার্লি ব্র্যাকেট, বন্ধনী বা সেমিকোলনের মতো সিনট্যাক্টিক মার্কার ব্যবহার করে না। এর বদলে এটি হোয়াইটস্পেস ও ইন্ডেন্টেশন ব্যবহার করে।

  • মডিউল, import এবং টপ-লেভেল ফাংশন ডেফিনিশন অবশ্যই একেবারে বামের কলাম থেকে শুরু হতে হবে।
  • যদি একটি এক্সপ্রেশন একাধিক লাইনে ভাগ করা হয়, তাহলে সেই এক্সপ্রেশনের অংশ যে কোডটি, তা ওই এক্সপ্রেশনের নিচে অন্তত একটি স্পেস ইন্ডেন্ট করতে হবে।
  • এক্সপ্রেশনের যে অংশগুলো একসাথে গ্রুপ করা হয়েছে, সেগুলো সমান সংখ্যক স্পেস দিয়ে ইন্ডেন্ট করা উচিত।
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://elmprogramming.com/indentation.html

মডিউল

Elm-এ প্রতিটি ফাইল একটি মডিউল, এবং অন্য সব কোডের আগে অবশ্যই একটি module স্টেটমেন্ট থাকতে হবে। মডিউলের নাম তার ফাইলের নামের সাথে মিলতে হবে, তাই Calculator মডিউলটি অবশ্যই Calculator.elm ফাইলে থাকতে হবে। একটি মডিউলের ভিতরে যা-ই ডিফাইন করা হোক, তা কেবল ওই মডিউলেই সীমাবদ্ধ থাকে এবং exposing-এ উল্লেখ না থাকলে এই মডিউলের বাইরে থেকে অ্যাক্সেস করা যায় না।

-- Define the Calculator module, and expose the `add` function
module Calculator exposing (add)

six = 3 + 3

add number1 number2 = number1 + number2
-- Define the Calculator module, and expose everything within: `six` and `add`
module Calculator exposing (..)

six = 3 + 3

add number1 number2 = number1 + number2

https://elm-lang.org/docs/syntax#modules

কমেন্ট

কমেন্ট হলো Elm ফাইলের ভিতরের এমন কিছু টেক্সট, যা কোড হিসেবে ইন্টারপ্রেট করা হয় না। এটি মূলত আপনার নিজের এবং অন্য প্রোগ্রামারদের পড়ার জন্য। ডাবল ড্যাশ ভিত্তিক সিঙ্গেল লাইন কমেন্টের জন্য একটি হালকা সিনট্যাক্স আছে। {- এবং -} এই ওপেনিং ও ক্লোজিং ডেলিমিটারের জোড়া দিয়ে মাল্টিলাইন কমেন্টও করা সম্ভব।

-- a single line comment
-- another single line comment

{- a multiline comment
   spawning multiple lines
-}

ফরম্যাটিং

একটি স্টাইল গাইড আছে, এবং কোড স্বয়ংক্রিয়ভাবে ফরম্যাট করতে elm-format ব্যবহার করা যায়।

নির্দেশনা

এই অনুশীলনীতে আপনি আপনার প্রিয় রান্নার বই থেকে একটি দুর্দান্ত লাসাগনা রান্না করতে সাহায্য করার জন্য কিছু কোড লিখবেন।

আপনার তিনটি কাজ আছে, যেগুলোর সবই লাসাগনা রান্নায় ব্যয় হওয়া সময়ের সাথে সম্পর্কিত।

1. ওভেনে প্রত্যাশিত সময় মিনিটে ডিফাইন করুন

লাসাগনাটি কত মিনিট ওভেনে থাকা উচিত তা হিসাব করার জন্য expectedMinutesInOven ডিফাইন করুন। রান্নার বই অনুযায়ী, ওভেনে প্রত্যাশিত সময় মিনিটে ৪০:

expectedMinutesInOven
    --> 40

2. প্রস্তুতির সময় মিনিটে হিসাব করুন

preparationTimeInMinutes ডিফাইন করুন, যা লাসাগনার স্তরের সংখ্যা প্যারামিটার হিসেবে নেয় এবং লাসাগনা প্রস্তুত করতে কত মিনিট লাগে তা রিটার্ন করে, ধরে নিয়ে যে প্রতিটি স্তর প্রস্তুত করতে ২ মিনিট লাগে।

preparationTimeInMinutes 3
    --> 6

3. অতিবাহিত সময় মিনিটে হিসাব করুন

elapsedTimeInMinutes ফাংশনটি ডিফাইন করুন, যা দুটি প্যারামিটার নেয়: প্রথম প্যারামিটারটি হলো লাসাগনার স্তরের সংখ্যা, আর দ্বিতীয় প্যারামিটারটি হলো লাসাগনাটি কত মিনিট ওভেনে আছে তা। ফাংশনটি রিটার্ন করবে লাসাগনা রান্না করতে আপনি কত মিনিট কাজ করেছেন, যা হলো প্রস্তুতির সময় মিনিটে এবং এই মুহূর্তে লাসাগনাটি ওভেনে যত মিনিট কাটিয়েছে তার যোগফল।

elapsedTimeInMinutes 3 20
    --> 26
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Elm Exercism

লুসিয়ানের সুস্বাদু লাসাগনা শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Elm ট্র্যাকের 28টি কনসেপ্ট110টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।