Haskell এ List এবং Tuple এর মৌলিক ধারণা
Haskell এ List এবং Tuple হলো দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা ডেটা সংরক্ষণ এবং সংগঠনের জন্য ব্যবহৃত হয়। এই দুইটি ডেটা স্ট্রাকচারের নিজস্ব বৈশিষ্ট্য এবং ব্যবহার ক্ষেত্র রয়েছে।
List
List হলো Haskell এর একটি মৌলিক ডেটা স্ট্রাকচার, যা এক ধরনের সিকোয়েন্স বা ক্রমিক ডেটা রাখে। Haskell এ List হলো একটি হোমোজেনিয়াস ডেটা স্ট্রাকচার, অর্থাৎ এর মধ্যে থাকা সব উপাদানের টাইপ একই হতে হবে।
List এর বৈশিষ্ট্য:
- একটি List তৈরি করতে
[ ]ব্যবহার করা হয়। - List-এর প্রতিটি উপাদান একই টাইপের হতে হবে (যেমন সব
Intবা সবString)। - List এর উপাদানগুলো ক্রমান্বয়ে থাকে এবং এদের অ্যাক্সেস করা বা পরিবর্তন করা সহজ।
- List একটি ইমিউটেবল ডেটা স্ট্রাকচার, অর্থাৎ একবার তৈরি হলে এর মান পরিবর্তন করা যায় না।
উদাহরণ:
myList :: [Int]
myList = [1, 2, 3, 4, 5]এখানে myList একটি Int টাইপের List, যা [1, 2, 3, 4, 5] উপাদানগুলো ধারণ করে।
List এর অপারেশন:
Head: List এর প্রথম উপাদান রিটার্ন করে।
head [1, 2, 3] -- আউটপুট: 1Tail: প্রথম উপাদান বাদ দিয়ে বাকি List রিটার্ন করে।
tail [1, 2, 3] -- আউটপুট: [2, 3]Length: List এর দৈর্ঘ্য প্রদান করে।
length [1, 2, 3] -- আউটপুট: 3Concatenate: দুটি List একত্রিত করতে
++অপারেটর ব্যবহার করা হয়।[1, 2] ++ [3, 4] -- আউটপুট: [1, 2, 3, 4]Element Addition:
:অপারেটর ব্যবহার করে নতুন উপাদান যুক্ত করা হয়।0 : [1, 2, 3] -- আউটপুট: [0, 1, 2, 3]
Tuple
Tuple হলো Haskell এর আরেকটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা একাধিক মান একত্রে ধরে রাখতে ব্যবহার করা হয়। Tuple এর মধ্যে থাকা উপাদানগুলির টাইপ এক হতে হবে এমন কোন বাধ্যবাধকতা নেই, অর্থাৎ একটি Tuple হেটেরোজেনিয়াস ডেটা স্ট্রাকচার।
Tuple এর বৈশিষ্ট্য:
- Tuple তৈরি করতে
( )ব্যবহার করা হয়। - Tuple এর উপাদানগুলির টাইপ ভিন্ন হতে পারে (যেমন একটি
Intএবং একটিStringএকসাথে রাখা যাবে)। - Tuple একটি নির্দিষ্ট আকারের ডেটা স্ট্রাকচার এবং এটির আকার পরিবর্তন করা যায় না।
- Tuple সাধারণত ফিক্সড আকারের ডেটা ধারণ করতে ব্যবহৃত হয়।
উদাহরণ:
myTuple :: (Int, String, Bool)
myTuple = (1, "Hello", True)এখানে myTuple একটি Tuple, যা একটি Int, একটি String, এবং একটি Bool ধারণ করে।
Tuple এর অপারেশন:
fst: দুটি উপাদান বিশিষ্ট Tuple এর প্রথম উপাদান রিটার্ন করে।
fst (1, "Hello") -- আউটপুট: 1snd: দুটি উপাদান বিশিষ্ট Tuple এর দ্বিতীয় উপাদান রিটার্ন করে।
snd (1, "Hello") -- আউটপুট: "Hello"Accessing Elements: বৃহত্তর Tuple এর উপাদানগুলোতে সরাসরি
fstবাsndএর মাধ্যমে অ্যাক্সেস করা যায় না, এজন্যpattern matchingব্যবহার করতে হয়।let (x, y, z) = (1, "Hello", True) -- x = 1, y = "Hello", z = True
পার্থক্য: List এবং Tuple
| বৈশিষ্ট্য | List | Tuple |
|---|---|---|
| টাইপ | হোমোজেনিয়াস (একই টাইপের উপাদান) | হেটেরোজেনিয়াস (বিভিন্ন টাইপের উপাদান থাকতে পারে) |
| আকার | পরিবর্তনযোগ্য আকার (dynamic size) | নির্দিষ্ট আকার (fixed size) |
| সিনট্যাক্স | [1, 2, 3] | (1, "Hello", True) |
| মিউটেবিলিটি | ইমিউটেবল | ইমিউটেবল |
| অ্যাপ্লিকেশন | ক্রমিক ডেটা স্টোর করতে | নির্দিষ্ট আকারের ডেটা স্টোর করতে |
উদাহরণ: List এবং Tuple একত্রে ব্যবহার
students :: [(String, Int)]
students = [("Alice", 20), ("Bob", 22), ("Charlie", 19)]এখানে:
studentsএকটি List যেখানে প্রতিটি উপাদান একটি Tuple হিসেবে সংজ্ঞায়িত করা হয়েছে।- প্রতিটি Tuple এর প্রথম উপাদান
Stringএবং দ্বিতীয় উপাদানInt।
উপসংহার
List এবং Tuple Haskell এর গুরুত্বপূর্ণ ডেটা স্ট্রাকচার যা ডেটা সংরক্ষণ এবং পরিচালনায় বিভিন্ন সুবিধা প্রদান করে। যেখানে List একই ধরনের ডেটার ক্রমিক সংগ্রহ সংরক্ষণে উপযোগী, সেখানে Tuple বিভিন্ন ধরনের ডেটার নির্দিষ্ট সংগ্রহ সংরক্ষণে কার্যকরী।
Read more