Haskell এ List Operations: Head, Tail, Map, Filter
Haskell একটি ফাংশনাল প্রোগ্রামিং ভাষা এবং এর অন্যতম শক্তিশালী বৈশিষ্ট্য হলো লিস্ট (List) ডেটা স্ট্রাকচার। লিস্ট ব্যবহারের জন্য বেশ কিছু ফাংশন এবং অপারেশন রয়েছে, যার মাধ্যমে লিস্টের উপাদানগুলি খুব সহজেই প্রসেস করা যায়। এখানে Head, Tail, Map, এবং Filter এর ব্যবহার তুলে ধরা হবে।
১. Head (হেড)
Head ফাংশনটি একটি লিস্টের প্রথম উপাদানকে রিটার্ন করে। এটি একটি সাধারণ এবং গুরুত্বপূর্ণ অপারেশন যখন আপনি লিস্টের প্রথম উপাদান বের করতে চান।
ব্যবহার:
head :: [a] -> ahead ফাংশনটি একটি লিস্ট নেয় এবং সেই লিস্টের প্রথম উপাদান প্রদান করে।
উদাহরণ:
Prelude> head [1, 2, 3, 4]
1
Prelude> head ["apple", "banana", "cherry"]
"apple"এখানে, head ফাংশনটি প্রথম উপাদানটি রিটার্ন করেছে। প্রথমে 1 এবং পরেরটি "apple"।
Note: যদি লিস্টটি খালি হয়, তাহলে head ফাংশন একটি run-time error দেবে।
Prelude> head []
*** Exception: Prelude.head: empty list২. Tail (টেইল)
Tail ফাংশনটি একটি লিস্টের প্রথম উপাদান বাদে বাকি সমস্ত উপাদান রিটার্ন করে। এটি লিস্টের প্রথম উপাদান বাদে অবশিষ্ট অংশ প্রদান করে।
ব্যবহার:
tail :: [a] -> [a]tail ফাংশনটি একটি লিস্ট নেয় এবং সেই লিস্টের প্রথম উপাদান বাদে বাকি লিস্ট প্রদান করে।
উদাহরণ:
Prelude> tail [1, 2, 3, 4]
[2, 3, 4]
Prelude> tail ["apple", "banana", "cherry"]
["banana", "cherry"]এখানে, tail ফাংশনটি প্রথম উপাদান বাদে বাকি অংশকে রিটার্ন করেছে। প্রথমে [2, 3, 4] এবং পরেরটি ["banana", "cherry"]।
Note: যদি লিস্টটি খালি হয়, তাহলে tail ফাংশনও একটি run-time error দেবে।
Prelude> tail []
*** Exception: Prelude.tail: empty list৩. Map (ম্যাপ)
Map ফাংশনটি একটি ফাংশন নেয় এবং একটি লিস্টের প্রতিটি উপাদানের ওপর সেই ফাংশনটি প্রয়োগ করে একটি নতুন লিস্ট তৈরি করে। এটি একটি হাইঅর্ডার ফাংশন, যা লিস্টের প্রতিটি উপাদানের সাথে কাজ করে এবং নতুন একটি লিস্ট তৈরি করে।
ব্যবহার:
map :: (a -> b) -> [a] -> [b]map ফাংশনটি একটি ফাংশন নেয় যা একটি উপাদানকে ইনপুট হিসেবে গ্রহণ করে এবং একটি নতুন উপাদান প্রদান করে। তারপর এটি সেই ফাংশনটি লিস্টের প্রতিটি উপাদানে প্রয়োগ করে।
উদাহরণ:
Prelude> map (*2) [1, 2, 3, 4]
[2, 4, 6, 8]
Prelude> map (++ " fruit") ["apple", "banana", "cherry"]
["apple fruit", "banana fruit", "cherry fruit"]এখানে, প্রথমে map (*2) ফাংশনটি লিস্টের প্রতিটি উপাদানকে দুই গুণ করেছে, এবং পরবর্তীতে map (++ " fruit") ফাংশনটি প্রতিটি উপাদানের সাথে " fruit" যোগ করেছে।
৪. Filter (ফিল্টার)
Filter ফাংশনটি একটি শর্তের ভিত্তিতে একটি লিস্টের উপাদানগুলিকে ফিল্টার করে। এটি একটি ফাংশন নেয় যা একটি উপাদান এবং একটি শর্ত পরীক্ষা করে এবং সত্য হলে সেই উপাদানটি নতুন লিস্টে অন্তর্ভুক্ত করে।
ব্যবহার:
filter :: (a -> Bool) -> [a] -> [a]filter ফাংশনটি একটি শর্ত নির্ধারণকারী ফাংশন নেয় এবং সেই শর্তে মেলে এমন উপাদানগুলি একটি নতুন লিস্টে প্রদান করে।
উদাহরণ:
Prelude> filter even [1, 2, 3, 4, 5, 6]
[2, 4, 6]
Prelude> filter (> 3) [1, 2, 3, 4, 5, 6]
[4, 5, 6]এখানে, প্রথমে filter even ফাংশনটি শুধু ইভেন (যুগল) সংখ্যাগুলিকে রিটার্ন করেছে, এবং পরবর্তীতে filter (> 3) ফাংশনটি ৩ এর চেয়ে বড় সংখ্যাগুলিকে ফিল্টার করেছে।
List Operations এর সংক্ষিপ্ত সারাংশ
| অপারেশন | ফাংশন | ব্যাখ্যা |
|---|---|---|
| Head | head | একটি লিস্টের প্রথম উপাদান প্রদান করে। |
| Tail | tail | একটি লিস্টের প্রথম উপাদান বাদে বাকি উপাদানগুলি প্রদান করে। |
| Map | map | একটি ফাংশনকে লিস্টের প্রতিটি উপাদানে প্রয়োগ করে নতুন লিস্ট তৈরি করে। |
| Filter | filter | একটি শর্ত অনুসারে লিস্টের উপাদানগুলো ফিল্টার করে। |
উপসংহার
Haskell এ List Operations যেমন Head, Tail, Map, এবং Filter অত্যন্ত কার্যকরী এবং গুরুত্বপূর্ণ টুলস। এই অপারেশনগুলির মাধ্যমে আপনি লিস্টের উপাদানগুলির সাথে কার্যকরভাবে কাজ করতে পারেন এবং তাদের ওপর বিভিন্ন অপারেশন বা শর্ত প্রয়োগ করে নতুন লিস্ট তৈরি করতে পারেন। এই ফাংশনাল অপারেশনগুলির মাধ্যমে কোড আরও সংক্ষিপ্ত, পরিষ্কার, এবং কার্যকরী হয়, যা ফাংশনাল প্রোগ্রামিং এর মূল দৃষ্টিভঙ্গির সাথে সামঞ্জস্যপূর্ণ।
Read more