
বেনামী ফাংশন, সাধারণত ল্যাম্বডা ফাংশন নামে পরিচিত, কার্যকরী প্রোগ্রামিং ভাষার একটি অবিচ্ছেদ্য অংশ যেমন Haskell,. ঐতিহ্যগত ফাংশন থেকে ভিন্ন, বেনামী ফাংশন একটি নাম নেই. তারা ফ্লাইতে সংজ্ঞায়িত করা হয় এবং সাধারণত ব্যবহার করা হয় যখন একটি ফাংশন শুধুমাত্র একবার প্রয়োজন হয়। আসুন একটি সমস্যায় ডুব দেওয়া যাক যা বেনামী ফাংশন ব্যবহার করে দক্ষতার সাথে সমাধান করা যেতে পারে।
সমস্যাটি
কল্পনা করুন আপনি শব্দের একটি তালিকা বিশ্লেষণ করার চেষ্টা করছেন এবং আপনাকে পরিসংখ্যানগতভাবে ডেটা ম্যানিপুলেট করতে হবে। আপনি তালিকায় প্রতিটি শব্দের দৈর্ঘ্যের ঘটনাগুলি গণনা করতে চান। আপনার কোড আরও সংক্ষিপ্ত এবং বজায় রাখা সহজ করতে, আপনি বেনামী ফাংশন ব্যবহার করার সিদ্ধান্ত নেন।
বেনামী ফাংশন সঙ্গে সমাধান
[সিউডোকোড ল্যাংগ="হাস্কেল"]
আমদানি Data.List
মানচিত্র হিসাবে যোগ্য Data.Map আমদানি করুন
wordLengthCount :: [String] -> Map.Map Int Int
wordLengthCount = Map.fromListWith (+)। মানচিত্র (x -> (দৈর্ঘ্য x, 1))
[/সুডোকোড]
আসুন ধাপে ধাপে সমাধানটি আনপ্যাক করি।
কোডের বিস্তারিত ব্যাখ্যা
প্রথম লাইনে, আমরা প্রয়োজনীয় লাইব্রেরি আমদানি করছি। 'Data.List' তালিকা ম্যানিপুলেশন ফাংশন প্রদান করে, যখন 'Data.Map' আমাদের একটি ডেটা টাইপের অ্যাক্সেস দেয় যা একটি মানচিত্র ডেটা কাঠামো বাস্তবায়নের জন্য ব্যবহার করা যেতে পারে।
'wordLengthCount' ফাংশনটি যুক্তি হিসাবে শব্দের (স্ট্রিং) একটি তালিকা নেয় এবং একটি মানচিত্র প্রদান করে যাতে প্রতিটি শব্দের দৈর্ঘ্যের সংঘটন গণনা থাকে।
প্রথমত, আমরা তালিকার প্রতিটি শব্দে বেনামী ফাংশন প্রয়োগ করতে মানচিত্র ফাংশন ব্যবহার করছি। আমাদের বেনামী ফাংশন, বা ল্যাম্বডা ফাংশন, এইভাবে সংজ্ঞায়িত করা হয়েছে:
[সিউডোকোড ল্যাংগ="হাস্কেল"]
x -> (দৈর্ঘ্য x, 1)
[/সুডোকোড]
ল্যাম্বডা ফাংশন ইনপুট ('x') হিসাবে একটি শব্দ নেয় এবং একটি টিপল আউটপুট করে – শব্দের দৈর্ঘ্য এবং 1। এই অপারেশনটি তালিকার প্রতিটি শব্দে প্রয়োগ করার পরে, আমরা টিপলের একটি তালিকা দিয়ে শেষ করি।
এর পরে, আমরা 'Map.fromListWith' ফাংশন ব্যবহার করি। 'fromListWith' ফাংশনটি একটি সহজ ফাংশন যা একটি বাইনারি ফাংশন এবং টিপলের একটি তালিকা নেয় এবং একটি মানচিত্র তৈরি করে।
বাইনারি ফাংশন হল (+), যা টিপলের দ্বিতীয় উপাদানগুলিকে যোগ করে যদি তাদের প্রথম উপাদানগুলি মিলে যায়। এইভাবে, ফাংশনটি আমাদের টিপলের তালিকা নেয়, শব্দের দৈর্ঘ্য অনুসারে সেগুলিকে গোষ্ঠীবদ্ধ করে এবং টিপলের দ্বিতীয় উপাদানগুলি যোগ করে - মূলত প্রতিটি শব্দের দৈর্ঘ্যের ঘটনাগুলি গণনা করে।
হাসকেল লাইব্রেরি এবং ফাংশন
এই কোডে, আমরা বেশ কয়েকটি হাসকেল লাইব্রেরি এবং ফাংশন ব্যবহার করেছি। 'ডেটা.লিস্ট' এবং 'ডেটা. ম্যাপ' হাস্কেলে ডেটা ম্যানিপুলেশন এবং কাঠামোর জন্য লাইব্রেরি অপরিহার্য। দ্য 'মানচিত্র' আমাদের তালিকার প্রতিটি আইটেমে আমাদের বেনামী ফাংশন প্রয়োগ করতে ফাংশনটি সহায়ক ছিল, আমাদের কোডের জটিলতা উল্লেখযোগ্যভাবে হ্রাস করে।
উপরন্তু, দী 'fromListWith' 'Data.Map' থেকে ফাংশন আমাদের দক্ষতার সাথে শব্দের দৈর্ঘ্য অনুসারে আমাদের ডেটা গ্রুপ করতে এবং মোট ঘটনাগুলি গণনা করার অনুমতি দেয়।
হাসকেলের শক্তি সত্যিই উজ্জ্বল হয় যখন আমরা এই সমস্ত ধারণাগুলি একসাথে ব্যবহার করি, কার্যকরী প্রোগ্রামিং ভাষার দক্ষতা এবং অভিব্যক্তি প্রদর্শন করে।
ফ্যাশনের পরিপ্রেক্ষিতে, এই বেনামী ফাংশন-চালিত কোডটির কমনীয়তা এবং সরলতাকে একটি ন্যূনতম ফ্যাশন প্রবণতার সাথে তুলনা করা যেতে পারে, যেখানে কম বেশি, এবং প্রতিটি অংশ (বা ফাংশন) অবশ্যই একটি পরিষ্কার, সংক্ষিপ্ত উদ্দেশ্য পরিবেশন করতে হবে। ন্যূনতম ফ্যাশনে পরিষ্কার লাইন এবং অগোছালো নান্দনিকতার মতো, হাসকেলের বেনামী ফাংশনগুলি সংক্ষিপ্ত, পরিষ্কার কোড অফার করে যা অতুলনীয় দক্ষতা এবং কমনীয়তার সাথে সম্পাদন করে।