Anonymous Functions এবং Lambda Expressions

Functions in Haskell (ফাংশন) - হ্যাস্কেল (Haskell) - Computer Programming

303

Anonymous Functions এবং Lambda Expressions in Haskell

Anonymous Functions এবং Lambda Expressions দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা Haskell সহ অনেক ফাংশনাল প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। এগুলি ফাংশন তৈরি করার একটি পদ্ধতি যেখানে ফাংশনের নাম না দিয়ে সরাসরি তার কার্যকারিতা ব্যাখ্যা করা হয়। হ্যাসকেল একটি ফাংশনাল ভাষা হওয়ায়, এই ধারণাগুলি ব্যাপকভাবে ব্যবহৃত হয়, বিশেষত হাইঅর্ডার ফাংশন এবং ফাংশন কম্পোজিশনের মধ্যে।


1. Anonymous Functions (এননামাস ফাংশন)

Anonymous Functions বা Unnamed Functions হলো এমন ফাংশন যাদের কোনো নাম থাকে না। সাধারণত, যখন কোনো ফাংশন একবার ব্যবহার করার জন্য তৈরি হয় এবং সেটির নাম নির্ধারণের প্রয়োজন নেই, তখন একে অ্যানোনিমাস ফাংশন হিসেবে ব্যবহার করা হয়। হ্যাসকেলে, এ ধরনের ফাংশন সাধারণত lambda expressions এর মাধ্যমে তৈরি করা হয়।

উদাহরণ:

ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা দুটি সংখ্যা যোগ করবে, কিন্তু এই ফাংশনের জন্য নাম রাখতে চান না। তা হলে আপনি এভাবে একটি অ্যানোনিমাস ফাংশন তৈরি করতে পারেন:

\x y -> x + y

এখানে, \x y -> x + y একটি অ্যানোনিমাস ফাংশন, যেখানে \ সিম্বলটি ফাংশন তৈরির নির্দেশক হিসেবে ব্যবহৃত হয়। এটি x এবং y এর দুটি আর্গুমেন্ট গ্রহণ করে এবং তাদের যোগফল প্রদান করে।

ব্যাখ্যা:

  • \x y এখানে ফাংশনের আর্গুমেন্টগুলো (যেমন x এবং y) নির্দেশ করছে।
  • -> সিম্বলটি ফাংশনের শরীর বা কার্যকলাপ নির্ধারণ করছে (এখানে, x + y।)

এটি সাধারণভাবে ব্যবহৃত হতে পারে:

-- এই ফাংশনটি দুইটি ইনপুট নেবে এবং তাদের যোগফল প্রদান করবে
main = print ((\x y -> x + y) 5 3)  -- আউটপুট: 8

এখানে, ( \x y -> x + y ) 5 3 ফাংশনটি 5 এবং 3 ইনপুট দিয়ে চালানো হয় এবং আউটপুট 8 আসে।


2. Lambda Expressions (ল্যাম্বডা এক্সপ্রেশন)

Lambda Expressions হলো এমন একটি সংক্ষিপ্ত উপায় যার মাধ্যমে অ্যানোনিমাস ফাংশন তৈরি করা হয়। হ্যাসকেল বা অন্যান্য ফাংশনাল প্রোগ্রামিং ভাষায় ল্যাম্বডা এক্সপ্রেশন ব্যবহৃত হয় ফাংশন ডিফাইনেশনের সময়ে যখন ফাংশনের নাম দেওয়া প্রয়োজন হয় না বা ফাংশনটি একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য ক্ষণিকের জন্য ব্যবহৃত হবে।

ল্যাম্বডা এক্সপ্রেশন হ্যাসকেলে নিম্নরূপ লেখা হয়:

\x -> expression

এখানে x হলো আর্গুমেন্ট এবং expression হলো ফাংশনের শরীর।

উদাহরণ:

-- একটি সাধারণ ল্যাম্বডা এক্সপ্রেশন যা একটি সংখ্যা গ্রহণ করে এবং তার গুণফল 2 দেয়
double = \x -> x * 2

-- ব্যবহার:
main = print (double 5)  -- আউটপুট: 10

এখানে, \x -> x * 2 একটি ল্যাম্বডা এক্সপ্রেশন যা একটি আর্গুমেন্ট x নেয় এবং সেটির গুণফল 2 করে। এটি একটি অ্যানোনিমাস ফাংশন যা double নামক ভ্যারিয়েবলে সংরক্ষিত।

Lambda Expressions with Multiple Arguments:

ল্যাম্বডা এক্সপ্রেশন একাধিক আর্গুমেন্টও গ্রহণ করতে পারে:

-- দুটি ইনপুট নিয়ে তাদের যোগফল ফেরত দেয়
add = \x y -> x + y

-- ব্যবহার:
main = print (add 5 3)  -- আউটপুট: 8

এখানে, \x y -> x + y দুটি আর্গুমেন্ট গ্রহণ করে তাদের যোগফল প্রদান করে।


3. Lambda Expressions with Higher-Order Functions (হাইঅর্ডার ফাংশনের সাথে ল্যাম্বডা এক্সপ্রেশন)

Haskell এর মতো ফাংশনাল প্রোগ্রামিং ভাষায়, Higher-Order Functions (হাইঅর্ডার ফাংশন) ব্যবহার করা হয়, যা একটি ফাংশন গ্রহণ করে অথবা একটি ফাংশন প্রদান করে। ল্যাম্বডা এক্সপ্রেশন হাইঅর্ডার ফাংশনগুলির মধ্যে ব্যবহারের জন্য খুবই উপযোগী।

উদাহরণ:

-- একটি হাইঅর্ডার ফাংশন যা একটি ফাংশন এবং একটি তালিকা নেয় এবং তালিকার উপর ফাংশনটি প্রয়োগ করে
applyFunction :: (a -> b) -> [a] -> [b]
applyFunction f xs = map f xs

-- ল্যাম্বডা এক্সপ্রেশন দিয়ে applyFunction ব্যবহার
main = print (applyFunction (\x -> x * 2) [1, 2, 3, 4])  
-- আউটপুট: [2, 4, 6, 8]

এখানে, applyFunction একটি হাইঅর্ডার ফাংশন যা একটি ফাংশন (\x -> x * 2) এবং একটি তালিকা গ্রহণ করে এবং সেই তালিকার প্রতিটি উপাদানের উপর সেই ফাংশনটি প্রয়োগ করে।


4. Lambda Expressions in List Comprehensions (লিস্ট কম্প্রিহেনশনএ ল্যাম্বডা এক্সপ্রেশন)

Haskell এ list comprehensions ব্যবহারের সময়ও ল্যাম্বডা এক্সপ্রেশন ব্যবহার করা হয়। এটি কোডটিকে আরও কমপ্যাক্ট এবং পড়তে সহজ করে।

উদাহরণ:

-- একটি তালিকার সব সেগমেন্ট 2 গুণ করতে ল্যাম্বডা এক্সপ্রেশন ব্যবহার
main = print [ (\x -> x * 2) x | x <- [1, 2, 3, 4]]
-- আউটপুট: [2, 4, 6, 8]

এখানে, ল্যাম্বডা এক্সপ্রেশন (\x -> x * 2) তালিকার প্রতিটি উপাদান (x) এর উপর প্রয়োগ করা হয়।


Conclusion

Anonymous Functions এবং Lambda Expressions হ্যাসকেল বা অন্যান্য ফাংশনাল প্রোগ্রামিং ভাষায় কোড সংক্ষিপ্ত এবং কার্যকরী করার জন্য ব্যবহৃত হয়। ল্যাম্বডা এক্সপ্রেশন ফাংশনগুলোকে একটি নির্দিষ্ট কাজ সম্পাদনের জন্য খুবই শক্তিশালী এবং সংক্ষিপ্ত উপায়ে তৈরি করতে সহায়ক। এগুলি হাইঅর্ডার ফাংশন, লিস্ট কম্প্রিহেনশন, এবং অন্যান্য প্রোগ্রামিং কৌশলের মধ্যে ব্যবহৃত হয়ে কোডকে আরও কার্যকরী এবং পরিষ্কার করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...