Functions as First-Class Citizens এবং Higher-Order Functions

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

F# এ Functions as First-Class Citizens এবং Higher-Order Functions

F# একটি ফাংশনাল প্রোগ্রামিং ভাষা এবং এর অন্যতম শক্তিশালী বৈশিষ্ট্য হলো functions as first-class citizens এবং higher-order functions। এটি F# কে আরও শক্তিশালী এবং কার্যকরী করে তোলে, বিশেষত যখন আপনি ফাংশনাল প্রোগ্রামিং ধারণাগুলি ব্যবহার করে কোড লেখেন।

১. Functions as First-Class Citizens (ফাংশন হিসাবে প্রথম শ্রেণীর নাগরিক)

একটি ভাষার মধ্যে functions as first-class citizens এর মানে হলো যে, ফাংশনগুলোকে কোডের অন্যান্য ডাটা টাইপের মতো প্রথম শ্রেণীর নাগরিক হিসেবে ব্যবহার করা হয়। এর ফলে, আপনি ফাংশনগুলিকে:

  • আর্গুমেন্ট হিসেবে পাস করতে পারেন।
  • অন্য ফাংশন থেকে রিটার্ন করতে পারেন।
  • ভেরিয়েবলের মান হিসেবে অ্যাসাইন করতে পারেন।

F# তে ফাংশনগুলি প্রথম শ্রেণীর নাগরিক, অর্থাৎ আপনি ফাংশনকে আর্গুমেন্ট হিসেবে পাঠাতে পারেন বা একটি ফাংশন থেকে ফেরত দিতে পারেন।

Functions as First-Class Citizens উদাহরণ

// Define a function that takes another function as an argument
let applyFunction f x = f x

// Define a function that adds 5 to a number
let addFive x = x + 5

// Call applyFunction with addFive as the argument
let result = applyFunction addFive 10
printfn "Result: %d" result

উপরের কোডে:

  • applyFunction ফাংশনটি অন্য একটি ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করে এবং তাকে একটি ইনপুট পাস করে।
  • addFive একটি ফাংশন যা ৫ যোগ করে দেয়।
  • applyFunction কে addFive ফাংশনটি আর্গুমেন্ট হিসেবে দেয়া হয়েছে এবং ১০ পাস করা হয়েছে। ফলস্বরূপ, আউটপুট হবে 15

এভাবে, F# ফাংশনকে প্রথম শ্রেণীর নাগরিক হিসেবে ব্যবহার করতে সাহায্য করে।

২. Higher-Order Functions (হায়ার-অর্ডার ফাংশন)

Higher-order function এমন একটি ফাংশন যা:

  1. একটি অথবা একাধিক ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করে।
  2. অথবা একটি ফাংশনকে রিটার্ন হিসেবে প্রদান করে।

F# এ, আপনি সহজেই হায়ার-অর্ডার ফাংশন তৈরি করতে পারেন। ফাংশনগুলোকে আর্গুমেন্ট হিসেবে গ্রহণ করে, বা অন্য ফাংশন ফেরত দিয়ে আরও অনেক শক্তিশালী এবং পুনঃব্যবহারযোগ্য কোড তৈরি করা সম্ভব।

Higher-Order Functions উদাহরণ

// Higher-order function that takes a function and a list, and applies the function to each element of the list
let mapList f lst = List.map f lst

// Function that doubles a number
let double x = x * 2

// Using the higher-order function to double each element in the list
let numbers = [1; 2; 3; 4]
let doubledNumbers = mapList double numbers

// Printing the result
printfn "Doubled numbers: %A" doubledNumbers

এখানে:

  • mapList একটি হায়ার-অর্ডার ফাংশন যা একটি ফাংশন f এবং একটি লিস্ট lst নেয় এবং List.map এর মাধ্যমে প্রতিটি এলিমেন্টে f ফাংশন প্রয়োগ করে।
  • double একটি সাধারণ ফাংশন যা একটি নম্বর দ্বিগুণ করে।
  • mapList ফাংশনটি double ফাংশনটি এবং একটি লিস্ট নেয় এবং তার প্রতিটি এলিমেন্টে double ফাংশন প্রয়োগ করে।
  • ফলস্বরূপ, doubledNumbers লিস্টে হবে [2; 4; 6; 8]

৩. Higher-Order Functions এর আরো উদাহরণ

ফাংশন রিটার্ন করে

// Function that returns another function
let multiplyBy n = 
    fun x -> x * n

// Create a function that multiplies by 3
let multiplyBy3 = multiplyBy 3

// Calling the returned function
let result = multiplyBy3 5
printfn "Result: %d" result

এখানে:

  • multiplyBy একটি হায়ার-অর্ডার ফাংশন, যা একটি মান n নেয় এবং একটি নতুন ফাংশন ফেরত দেয় যা x এর সাথে n গুণ করে।
  • multiplyBy3 একটি নতুন ফাংশন যা multiplyBy 3 থেকে তৈরি হয়েছে এবং এটি কোনো সংখ্যার সাথে ৩ গুণ করে।

ফাংশন কম্পোজিশন

F# এ আপনি সহজেই ফাংশন কম্পোজিশন করতে পারেন, অর্থাৎ একটি ফাংশন থেকে অন্য ফাংশনে আউটপুট পাস করতে পারেন।

// Function to add 5
let addFive x = x + 5

// Function to multiply by 2
let multiplyByTwo x = x * 2

// Compose the two functions
let addFiveThenMultiply = addFive >> multiplyByTwo

// Apply the composed function
let result = addFiveThenMultiply 3
printfn "Result: %d" result

এখানে:

  • >> অপারেটরটি দুটি ফাংশনকে একত্রিত করে, প্রথম ফাংশনের আউটপুট দ্বিতীয় ফাংশনের ইনপুট হিসেবে পাঠানো হয়।
  • addFiveThenMultiply প্রথমে ৫ যোগ করবে এবং তারপর ২ গুণ করবে।

ফলস্বরূপ, addFiveThenMultiply 3 হবে 16 (প্রথমে ৩ তে ৫ যোগ করা হবে, তারপর ২ গুণ হবে)।

৪. Summary

  • Functions as First-Class Citizens: F# তে ফাংশনগুলোকে প্রথম শ্রেণীর নাগরিক হিসেবে ব্যবহার করা হয়। এর মানে, আপনি ফাংশনকে আর্গুমেন্ট হিসেবে পাস করতে পারেন, একটি ফাংশন থেকে রিটার্ন করতে পারেন, অথবা ফাংশনকে ভেরিয়েবলে অ্যাসাইন করতে পারেন।
  • Higher-Order Functions: হায়ার-অর্ডার ফাংশন এমন ফাংশন যা অন্য ফাংশন গ্রহণ করে অথবা একটি ফাংশন ফেরত দেয়। এটি কোডের পুনঃব্যবহারযোগ্যতা এবং নমনীয়তা বৃদ্ধি করে, এবং জটিল প্রোগ্রামিং সমস্যার সমাধান করতে সহায়তা করে।

এভাবে, F# তে ফাংশনাল প্রোগ্রামিংয়ের শক্তিশালী ধারণাগুলি যেমন First-Class Functions এবং Higher-Order Functions ব্যবহারের মাধ্যমে কোডকে আরও সাধারণ, পরিষ্কার এবং কার্যকরী করা যায়।

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

Are you sure to start over?

Loading...