ট্র্যাক
/
Haskell
Haskell
/
সিলেবাস
/
অ্যালজেব্রাইক ডেটা টাইপ
অ্

অ্যালজেব্রাইক ডেটা টাইপ মধ্যে Haskell

১টি অনুশীলনী

অ্যালজেব্রাইক ডেটা টাইপ সম্পর্কে

একটি অ্যালজেব্রিক ডেটা টাইপ (ADT) নির্দিষ্ট সংখ্যক নামযুক্ত কেস উপস্থাপন করে। একটি ADT-এর প্রতিটি মান ঠিক একটি নামযুক্ত কেসের সাথে মিলে যায়।

ADT ডিফাইন করা হয় data কিওয়ার্ড দিয়ে, যেখানে কেসগুলো পাইপ (|) ক্যারেক্টার দিয়ে আলাদা করা হয়। কোনো কেসের সাথে ডেটা যুক্ত না থাকলে, ADT টি অন্য ভাষায় সাধারণত অ্যানুমারেশন (বা এনাম) নামে যা পরিচিত, তার মতোই হয়।

data Season
  = Spring
  | Summer
  | Autumn
  | Winter

ADT-এর প্রতিটি কেসের সাথে ঐচ্ছিকভাবে ডেটা যুক্ত থাকতে পারে, এবং ভিন্ন কেসে ভিন্ন ধরনের ডেটা থাকতে পারে। কেসের সাথে ডেটা যুক্ত থাকলে একটি কনস্ট্রাক্টর লাগে।

data Number
  = NInt Int      --'NInt' is the constructor for an Int Number.
  | NFloat Float  --'NFloat' is the constructor for an Float Number.
  | Invalid       --'Invalid' does not have data associated to it.

নির্দিষ্ট কোনো কেসের একটি মান তৈরি করা যায় তার নাম উল্লেখ করে (যেমন, NInt 22)। যেহেতু কেসের নামগুলো আসলে কনস্ট্রাক্টর ফাংশন, তাই যুক্ত ডেটা সাধারণ ফাংশন আর্গুমেন্ট হিসেবেই পাস করা যায়।

ADT-গুলোতে স্ট্রাকচারাল ইকুয়ালিটি থাকে, অর্থাৎ একই কেসের এবং একই (ঐচ্ছিক) ডেটাসহ দুটি মান সমতুল্য।

ADT নিয়ে কাজ করতে if/else এক্সপ্রেশন ব্যবহার করা গেলেও, এদের নিয়ে কাজ করার সুপারিশ করা উপায় হলো case স্টেটমেন্টের মাধ্যমে প্যাটার্ন ম্যাচিং:

add1 :: Number -> String
add1 number =
    case number of
      NInt    i -> show (i + 1)
      NFloat  f -> show (f + 1.0)
      Invalid   -> error "Invalid input"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে