Lambda Functions এবং Currying

Computer Programming - এফ শার্প প্রোগ্রামিং (F# Programming) - Functions in F# (ফাংশনস)
160

Lambda Functions এবং Currying

Lambda Functions এবং Currying হল ফাংশনাল প্রোগ্রামিংয়ের দুটি গুরুত্বপূর্ণ ধারণা। এগুলি ফাংশনাল প্রোগ্রামিং ভাষাগুলিতে বিশেষভাবে গুরুত্বপূর্ণ, বিশেষত যখন আমরা ফাংশনকে এক্সপ্রেশন হিসেবে ব্যবহার করি। চলুন এগুলির বিশদভাবে আলোচনা করি।


১. Lambda Functions

Lambda Functions (বা Anonymous Functions) হল এমন ফাংশন যা কোনো নাম ছাড়াই তৈরি করা হয় এবং সাধারণত ছোট, এককালীন ব্যবহার করা হয়। Lambda ফাংশনগুলো ব্যবহার করা হয় যখন আপনি একটি ফাংশনকে অনলাইন বা স্থানীয়ভাবে সংজ্ঞায়িত করতে চান, তবে আলাদা করে নামকরণের প্রয়োজন নেই।

Lambda Functions এর বৈশিষ্ট্য:

  • এটি একটি anonymous function, অর্থাৎ একটি ফাংশন যার নাম থাকে না।
  • এটি সাধারণত ছোট কাজের জন্য ব্যবহার করা হয় এবং একবারের জন্য ব্যবহৃত হতে পারে।
  • Lambda ফাংশনকে অন্য ফাংশনে আর্গুমেন্ট হিসেবে পাস করা বা একটি এক্সপ্রেশন হিসেবে ব্যবহার করা যেতে পারে।

Lambda Functions এর উদাহরণ:

  1. Lambda ফাংশন সাইন:
    F# এ একটি Lambda ফাংশন সাধারণত fun কিওয়ার্ড দিয়ে তৈরি করা হয়:

    let add = fun x y -> x + y
    printfn "%d" (add 3 4)  // আউটপুট: 7

    এখানে fun x y -> x + y একটি Lambda ফাংশন, যা দুইটি আর্গুমেন্ট x এবং y গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।

  2. Lambda ফাংশন সরাসরি ব্যবহার:
    Lambda ফাংশনকে সরাসরি একটি ফাংশন কলের মধ্যে ব্যবহার করা যেতে পারে:

    List.map (fun x -> x * x) [1; 2; 3; 4]

    এখানে List.map ফাংশনে একটি Lambda ফাংশন পাস করা হয়েছে যা প্রতিটি উপাদানকে তার বর্গে রূপান্তর করে।

  3. Lambda ফাংশন ব্যবহার করে অন্যান্য ফাংশন:
    Lambda ফাংশন সাধারণত ফাংশনাল প্রোগ্রামিংয়ে উচ্চ-স্তরের ফাংশন হিসেবে ব্যবহার করা হয়, যেমন:

    let multiply x y = (fun a b -> a * b) x y
    printfn "%d" (multiply 5 6)  // আউটপুট: 30

    এখানে Lambda ফাংশন a * b গণনা করে এবং এটি multiply ফাংশনে ব্যবহার করা হয়েছে।


২. Currying

Currying হল একটি ফাংশনাল প্রোগ্রামিং কৌশল, যেখানে একটি ফাংশনকে একাধিক আর্গুমেন্টের পরিবর্তে একে একে আর্গুমেন্টের একটি সিরিজ গ্রহণ করার জন্য ডিজাইন করা হয়। এটি মূলত একাধিক আর্গুমেন্টের জন্য ফাংশন তৈরি করার একটি প্রযুক্তি, যা ধাপে ধাপে আর্গুমেন্ট নেয় এবং প্রতি ধাপে একটি নতুন ফাংশন রিটার্ন করে। Currying সাধারণত ফাংশনগুলির পুনঃব্যবহারযোগ্যতা এবং জেনেরিকতা বৃদ্ধি করে।

Currying এর বৈশিষ্ট্য:

  • এটি একাধিক আর্গুমেন্টের পরিবর্তে একক আর্গুমেন্ট নেয়।
  • Currying প্রক্রিয়া ধাপে ধাপে আর্গুমেন্ট গ্রহণ করে এবং একটি নতুন ফাংশন রিটার্ন করে।
  • এটি ফাংশনকে আরও পুনঃব্যবহারযোগ্য এবং জেনেরিক করে তোলে।

Currying এর উদাহরণ:

  1. Currying ফাংশন:
    F# এ Currying ফাংশন সাধারণভাবে এভাবে তৈরি করা যায়:

    let add x y = x + y
    let curriedAdd = add 5
    printfn "%d" (curriedAdd 3)  // আউটপুট: 8

    এখানে add ফাংশন দুটি আর্গুমেন্ট নেয়, কিন্তু add 5 কল করার মাধ্যমে একটি নতুন ফাংশন তৈরি হয়েছে যা y আর্গুমেন্ট নেবে এবং 5 + y এর ফলাফল রিটার্ন করবে।

  2. Currying এর উদাহরণ with fun:
    যদি add ফাংশনকে Currying স্টাইলের ফাংশন হিসেবে লেখা হয়, এটি দেখতে এরকম হবে:

    let curriedAdd = fun x -> (fun y -> x + y)
    let add5 = curriedAdd 5
    printfn "%d" (add5 3)  // আউটপুট: 8

    এখানে, প্রথম fun x একটি ফাংশন তৈরি করে এবং পরে fun y আরেকটি ফাংশন তৈরি করে যা দুটি আর্গুমেন্ট গ্রহণ করে।

  3. Multiple Currying Example:
    Currying যখন একাধিক আর্গুমেন্টের জন্য ব্যবহৃত হয়:

    let curriedAdd x y z = x + y + z
    let add5 = curriedAdd 5
    let add5and3 = add5 3
    printfn "%d" (add5and3 4)  // আউটপুট: 12

    এখানে, curriedAdd ফাংশনটি প্রথমে x আর্গুমেন্ট নেয়, তারপর y এবং পরিশেষে z আর্গুমেন্ট নেয়, এবং এটি তিনটি আর্গুমেন্টের যোগফল প্রদান করে।


Lambda Functions এবং Currying এর মধ্যে সম্পর্ক

  • Lambda Functions এবং Currying একসাথে কাজ করে, কারণ আপনি একটি curried ফাংশনে lambda ব্যবহার করে আরও সংক্ষিপ্ত এবং এক্সপ্রেশনাল কোড লিখতে পারেন।
  • Lambda ফাংশন একটি নির্দিষ্ট আর্গুমেন্ট নিয়ে কাজ করে, এবং Currying ফাংশন একাধিক আর্গুমেন্টের জন্য একটি ধাপে ধাপে মান গ্রহণ করে, যা Lambda ফাংশনের মাধ্যমে আরও কার্যকরীভাবে ম্যানিপুলেট করা যায়।

উদাহরণ:

let add x = fun y -> x + y  // Lambda function with Currying
let add5 = add 5
printfn "%d" (add5 3)  // আউটপুট: 8

এখানে add একটি Currying ফাংশন, এবং এর ভিতরে একটি lambda function রয়েছে, যা y আর্গুমেন্ট নেবে এবং x + y এর যোগফল রিটার্ন করবে।


উপসংহার

Lambda Functions এবং Currying F# এবং অন্যান্য ফাংশনাল প্রোগ্রামিং ভাষায় খুবই শক্তিশালী ধারণা। Lambda ফাংশন ছোট এবং এককালীন ফাংশন তৈরিতে সাহায্য করে, যা কোডকে আরও সংক্ষিপ্ত এবং কার্যকরী করে তোলে। অন্যদিকে, Currying ফাংশনগুলি একটি ধারাবাহিক আর্গুমেন্ট গ্রহণ করার মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে। এই দুটি ধারণা একত্রে ব্যবহার করলে কোড আরও পরিষ্কার, পুনঃব্যবহারযোগ্য এবং শক্তিশালী হয়ে ওঠে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...