Haskell এ Case Expressions এবং Guarded Expressions
Haskell এ case expressions এবং guarded expressions হল দুটি গুরুত্বপূর্ণ কনস্ট্রাক্ট যা কোডে শর্ত নির্ধারণ করার জন্য ব্যবহৃত হয়। এগুলি সাধারণত প্যাটার্ন ম্যাচিং এর সাথে সম্পর্কিত, এবং কোডের পড়তে সহজতা, পরিষ্কারতা, এবং কার্যকারিতা বৃদ্ধি করে।
1. Case Expressions (কেস এক্সপ্রেশন)
Case expressions হল একটি শর্তাধীন গঠন যা একাধিক প্যাটার্নের মধ্যে একটি নির্বাচন করে এবং সেই অনুযায়ী কার্যক্রম চালায়। এটি case কীওয়ার্ড ব্যবহার করে এবং সাধারণত প্যাটার্ন ম্যাচিং এর জন্য ব্যবহৃত হয়।
Case Expression এর সিনট্যাক্স:
case expression of
pattern1 -> result1
pattern2 -> result2
...
_ -> defaultResultএখানে:
expression: এটি সেই মান যা আমরা যাচাই করতে চাই।pattern1,pattern2, ইত্যাদি: এগুলি বিভিন্ন প্যাটার্ন যেগুলির সাথেexpressionমিলিয়ে দেখা হবে।defaultResult: এটি একটি ডিফল্ট মান, যা যদি কোন প্যাটার্নের সাথে মেলে না তবে ফেরত দেওয়া হবে। সাধারণত_ব্যবহার করা হয়, যা "any value" এর প্রতিনিধিত্ব করে।
Case Expressions এর উদাহরণ:
-- একটি সংখ্যা যাচাই করার ফাংশন
checkNumber :: Int -> String
checkNumber x = case x of
0 -> "Zero"
1 -> "One"
2 -> "Two"
_ -> "Other"এখানে, checkNumber ফাংশনটি ইনপুট সংখ্যার উপর ভিত্তি করে একটি স্ট্রিং ফেরত দেয়।
- যদি
x0 হয়, তাহলে "Zero" ফেরত দেয়। - যদি
x1 হয়, তাহলে "One" ফেরত দেয়। - যদি
x2 হয়, তাহলে "Two" ফেরত দেয়। - অন্য যে কোনো মানের জন্য "Other" ফেরত দেয়, যেটি
_দ্বারা প্রতিনিধিত্ব করা হয়, অর্থাৎ ডিফল্ট প্যাটার্ন।
উদাহরণ:
checkNumber 1 -- ফলস্বরূপ: "One"
checkNumber 4 -- ফলস্বরূপ: "Other"2. Guarded Expressions (গার্ডেড এক্সপ্রেশন)
Guarded expressions হ'ল শর্তের জন্য একটি বিকল্প উপায়, যেখানে শর্তগুলির জন্য | (পাইপ সাইন) ব্যবহার করা হয়। এটি সাধারণত ফাংশনের বিভিন্ন শর্তাধীন শাখাগুলির জন্য ব্যবহৃত হয় এবং গার্ড (শর্ত) ব্যবহার করে প্রতিটি শাখার মান নির্ধারণ করে।
Guarded Expressions এর সিনট্যাক্স:
functionName argument
| condition1 = result1
| condition2 = result2
| otherwise = defaultResultএখানে:
condition1,condition2: এগুলি শর্ত যা যাচাই করা হবে।result1,result2: শর্ত পূর্ণ হলে ফলাফল।otherwise: এটি একটি ডিফল্ট গার্ড যা সব শর্ত বিফল হলে কার্যকরী হয়।otherwiseএকটি বিশেষ কিওয়ার্ড যাTrueসমান।
Guarded Expressions এর উদাহরণ:
-- একটি সংখ্যা যাচাই করার গার্ডেড ফাংশন
checkNumberGuarded :: Int -> String
checkNumberGuarded x
| x == 0 = "Zero"
| x == 1 = "One"
| x == 2 = "Two"
| otherwise = "Other"এখানে, checkNumberGuarded ফাংশনটি x এর মানের উপর ভিত্তি করে স্ট্রিং ফেরত দেয়।
- প্রথমে চেক করা হয়, যদি
x0 হয় তবে "Zero" ফেরত দেয়। - এরপর, যদি
x1 হয়, তবে "One" ফেরত দেয়। - যদি
x2 হয়, "Two" ফেরত দেয়। - অন্য যে কোনো মানের জন্য "Other" ফেরত দেয়, যা
otherwiseদ্বারা চিহ্নিত।
উদাহরণ:
checkNumberGuarded 1 -- ফলস্বরূপ: "One"
checkNumberGuarded 4 -- ফলস্বরূপ: "Other"3. Case Expressions এবং Guarded Expressions এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Case Expressions | Guarded Expressions |
|---|---|---|
| শর্ত নির্ধারণ | case ব্লক দিয়ে বিভিন্ন প্যাটার্নের সাথে মিলানো হয়। | ` |
| কোডের গঠন | একাধিক শাখা থাকে যা প্রতিটি প্যাটার্নের জন্য ফলস্বরূপ দেয়। | একাধিক গার্ড থাকে যা প্রতিটি শর্তের জন্য ফলস্বরূপ দেয়। |
| ব্যবহার | মূলত প্যাটার্ন ম্যাচিং ব্যবহার করা হয়। | শর্ত এবং ফলাফল সহজে পরিষ্কারভাবে প্রদর্শন করতে ব্যবহৃত হয়। |
| ডিফল্ট ফলাফল | _ ব্যবহার করে ডিফল্ট ফলাফল দেওয়া হয়। | otherwise ব্যবহার করে ডিফল্ট ফলাফল দেওয়া হয়। |
| সুন্দরতা ও পাঠযোগ্যতা | বড় শর্তযুক্ত ক্ষেত্রে আরও পরিষ্কার হতে পারে। | অনেক সময় একাধিক গার্ড থাকতে পারে যা কোডের পাঠযোগ্যতা বৃদ্ধি করতে সহায়ক। |
উপসংহার
Case expressions এবং Guarded expressions হল Haskell এ শর্ত নির্ধারণের জন্য দুটি শক্তিশালী কৌশল। Case expressions সাধারণত প্যাটার্ন ম্যাচিং ব্যবহারের জন্য উপযুক্ত, যেখানে Guarded expressions শর্তগুলো আরও পরিষ্কারভাবে উল্লেখ করতে সহায়ক। কোনটি ব্যবহার করা হবে তা নির্ভর করে কোডের কাঠামো এবং ব্যবহারকারী পছন্দের উপর, তবে উভয় ক্ষেত্রেই কোডের পাঠযোগ্যতা এবং কার্যকারিতা বাড়ানো সম্ভব।
Read more