সিকোয়েন্স ফাংশনসমূহ: map, filter, এবং reduce (Clojure)
ক্লোজার (Clojure) প্রোগ্রামিং ভাষায় সিকোয়েন্স ফাংশনগুলো খুবই শক্তিশালী এবং তা ডেটা পরিচালনার জন্য কার্যকরী। এর মধ্যে তিনটি গুরুত্বপূর্ণ ফাংশন হলো map, filter, এবং reduce। এগুলো ফাংশনাল প্রোগ্রামিংয়ে সাধারণত ব্যবহৃত হয় এবং সংগ্রহ (collection) থেকে তথ্য প্রক্রিয়া করতে সাহায্য করে।
১. map: সংগ্রহের উপাদানগুলো রূপান্তর করা
map ফাংশনটি একটি নির্দিষ্ট ফাংশন প্রতিটি উপাদানের ওপর প্রয়োগ করে এবং একটি নতুন সংগ্রহ (যেমন: লিস্ট, ভেক্টর) প্রদান করে, যেখানে প্রতিটি উপাদান প্রক্রিয়া করা হয়।
সিনট্যাক্স:
(map function collection)- function: একটি ফাংশন, যা সংগ্রহের প্রতিটি উপাদানের ওপর প্রয়োগ করা হবে।
- collection: একটি সংগ্রহ (যেমন: লিস্ট, ভেক্টর, সেট) যার উপাদানগুলোকে ফাংশনের মাধ্যমে প্রক্রিয়া করা হবে।
উদাহরণ: map ব্যবহার
(def numbers [1 2 3 4 5])
; প্রতিটি সংখ্যাকে ২ দিয়ে গুণ করা
(def doubled (map #(* 2 %) numbers))
(doubled) ; আউটপুট: (2 4 6 8 10)এখানে, #(* 2 %) একটি অ্যনোনিমাস ফাংশন যা প্রতিটি উপাদানকে ২ দিয়ে গুণ করে। নতুন সিকোয়েন্সটি হলো (2 4 6 8 10)।
২. filter: শর্তানুযায়ী উপাদান নির্বাচন করা
filter ফাংশনটি একটি শর্ত (predicate) ব্যবহার করে একটি সংগ্রহের উপাদানগুলো থেকে শুধু সেই উপাদানগুলো নির্বাচন করে যেগুলো শর্ত পূরণ করে।
সিনট্যাক্স:
(filter predicate collection)- predicate: একটি শর্ত (ফাংশন), যা নির্ধারণ করে কোন উপাদানগুলো সংরক্ষণ করতে হবে।
- collection: একটি সংগ্রহ (যেমন: লিস্ট, ভেক্টর) যেখান থেকে শর্ত পূর্ণ করা উপাদানগুলো বের করা হবে।
উদাহরণ: filter ব্যবহার
(def numbers [1 2 3 4 5 6])
; শুধুমাত্র যেগুলি সোজা সংখ্যা (even) তা বের করা
(def even-numbers (filter even? numbers))
(even-numbers) ; আউটপুট: (2 4 6)এখানে, even? ফাংশনটি শর্ত হিসেবে ব্যবহৃত হচ্ছে, যার মাধ্যমে শুধুমাত্র সোজা (even) সংখ্যাগুলো বের করা হয়েছে।
৩. reduce: উপাদানগুলোর উপর একটি একক মান অর্জন করা
reduce ফাংশনটি একটি সংগ্রহের উপাদানগুলোকে একটি একক মানে (যেমন: যোগফল, গুণফল, ইত্যাদি) পরিণত করতে ব্যবহৃত হয়। এটি একটি একক রেজাল্ট তৈরি করতে দুটি উপাদানকে একসাথে প্রক্রিয়া করে এবং তা পরবর্তী উপাদানের সঙ্গে চালিয়ে যায়।
সিনট্যাক্স:
(reduce function collection)- function: একটি ফাংশন, যা দুটি উপাদানকে একসঙ্গে প্রক্রিয়া করে একটি একক মান তৈরি করবে।
- collection: একটি সংগ্রহ (যেমন: লিস্ট, ভেক্টর) যার উপাদানগুলোর উপর রিডিউস ফাংশন কাজ করবে।
উদাহরণ: reduce ব্যবহার
(def numbers [1 2 3 4 5])
; সব সংখ্যার যোগফল বের করা
(def sum (reduce + numbers))
(sum) ; আউটপুট: 15এখানে, + ফাংশনটি সমস্ত সংখ্যার উপর প্রয়োগ করা হয়েছে এবং সেগুলোর যোগফল ১৫ বের করা হয়েছে।
সারসংক্ষেপ
| ফাংশন | কাজ | উদাহরণ |
|---|---|---|
map | প্রতিটি উপাদানের উপর একটি ফাংশন প্রয়োগ করে একটি নতুন সংগ্রহ তৈরি করা | map #(* 2 %) numbers |
filter | একটি শর্তের ভিত্তিতে উপাদানগুলো নির্বাচন করা | filter even? numbers |
reduce | সমস্ত উপাদানগুলো একটি একক মানে রূপান্তর করা | reduce + numbers |
এই ফাংশনগুলো ক্লোজারে একটি শক্তিশালী সরঞ্জাম হিসেবে কাজ করে, যা সংগ্রহের উপাদানগুলোকে রূপান্তর, ফিল্টার এবং কম্পাইল করার জন্য খুবই কার্যকর।
Read more