Functor এবং Applicative এর ধারণা

Monads এবং Functors (মোনাড এবং ফানক্টর) - হ্যাস্কেল (Haskell) - Computer Programming

258

Haskell এ Functor এবং Applicative এর ধারণা

Haskell এ Functor এবং Applicative হলো দুইটি গুরুত্বপূর্ণ টাইপ ক্লাস, যা ফাংশনাল প্রোগ্রামিংয়ের কনটেক্সটে মানচিত্রণ এবং অপারেশনগুলোকে আরও সাধারণ এবং মডুলার করে তোলে। Functor এবং Applicative এর মাধ্যমে ডেটা স্ট্রাকচারের উপরে অপারেশন প্রয়োগ করা যায়, যা কোডকে আরও সংক্ষিপ্ত এবং কার্যকর করে।


Functor

Functor একটি টাইপ ক্লাস যা fmap ফাংশনের মাধ্যমে ডেটা স্ট্রাকচারের উপর ফাংশন প্রয়োগ করতে ব্যবহৃত হয়। Functor এমন একটি টাইপ ক্লাস, যেখানে যেকোনো ফাংশনকে ডেটা স্ট্রাকচারের প্রতিটি উপাদানের উপর মানচিত্রিত করা যায়।

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

  1. fmap: Functor এর প্রধান অপারেশন হলো fmap, যা একটি ফাংশন এবং একটি Functor নেয় এবং Functor এর প্রতিটি উপাদানের উপর ফাংশন প্রয়োগ করে।
  2. প্রকৃতি: Functor সাধারণত লিস্ট, Maybe, ইত্যাদি টাইপের ডেটা স্ট্রাকচারে ব্যবহৃত হয়।
  3. ল অব ইডেন্টিটি: fmap id == id
  4. ল অব কম্পোজিশন: fmap (f . g) == fmap f . fmap g

Functor এর উদাহরণ:

instance Functor Maybe where
    fmap _ Nothing = Nothing
    fmap f (Just x) = Just (f x)

এখানে, Maybe কে একটি Functor হিসেবে সংজ্ঞায়িত করা হয়েছে। fmap Nothing এর জন্য কিছুই করে না এবং Just x এর উপরে ফাংশন f প্রয়োগ করে।

উদাহরণ:

fmap (+1) (Just 5)   -- আউটপুট: Just 6
fmap (+1) Nothing    -- আউটপুট: Nothing

Applicative

Applicative টাইপ ক্লাস Functor এর চেয়ে শক্তিশালী, কারণ এটি এমন ফাংশনের উপর কাজ করে যা একাধিক আর্গুমেন্ট নেয়। Applicative এর মাধ্যমে একাধিক Functor এর মধ্যে ফাংশন প্রয়োগ করা সম্ভব।

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

  1. pure: Applicative এর প্রধান ফাংশন pure, যা একটি মানকে Applicative টাইপের মধ্যে রাখে।
  2. <*> (apply): একটি ফাংশন যা Applicative টাইপের ফাংশনকে Applicative টাইপের মানের উপর প্রয়োগ করে।
  3. ল অব ইডেন্টিটি: pure id <*> v == v
  4. ল অব কম্পোজিশন: pure (.) <*> u <*> v <*> w == u <*> (v <*> w)

Applicative এর উদাহরণ:

instance Applicative Maybe where
    pure = Just
    Nothing <*> _ = Nothing
    (Just f) <*> something = fmap f something

এখানে, Maybe Applicative হিসেবে সংজ্ঞায়িত করা হয়েছে। pure একটি মানকে Just এর মধ্যে রাখে এবং <*> ফাংশনকে Maybe টাইপের মানের উপরে প্রয়োগ করে।

উদাহরণ:

pure (+) <*> Just 3 <*> Just 4   -- আউটপুট: Just 7
pure (+) <*> Nothing <*> Just 4  -- আউটপুট: Nothing

Functor এবং Applicative এর পার্থক্য

বৈশিষ্ট্যFunctorApplicative
প্রধান ফাংশনfmappure এবং <*>
ক্ষমতাএকক ফাংশনকে Functor এর উপর প্রয়োগ করেএকাধিক Functor এর উপর ফাংশন প্রয়োগ করতে পারে
ল অব ইডেন্টিটিfmap id == idpure id <*> v == v
ডিপেন্ডেন্সিশুধুমাত্র Functor টাইপApplicative Functor এর চেয়ে শক্তিশালী

উদাহরণ: Functor এবং Applicative একত্রে ব্যবহার

নিচে Maybe টাইপে Functor এবং Applicative একত্রে ব্যবহারের উদাহরণ দেওয়া হলো।

-- Functor উদাহরণ
result1 :: Maybe Int
result1 = fmap (*2) (Just 5)     -- আউটপুট: Just 10

-- Applicative উদাহরণ
result2 :: Maybe Int
result2 = pure (+) <*> Just 3 <*> Just 7   -- আউটপুট: Just 10

উপসংহার

Functor এবং Applicative Haskell এর টাইপ ক্লাস, যা ফাংশনকে বিভিন্ন ডেটা স্ট্রাকচারের উপর প্রয়োগ করে। Functor একক ফাংশনকে ডেটা স্ট্রাকচারের উপরে প্রয়োগ করতে ব্যবহৃত হয়, যেখানে Applicative একাধিক Functor এর মধ্যে ফাংশন প্রয়োগ করতে সক্ষম। Functor এবং Applicative একত্রে Haskell এর ফাংশনাল প্রোগ্রামিংয়ে শক্তিশালী টুল হিসেবে কাজ করে।

Content added By
Promotion

Are you sure to start over?

Loading...