Custom Data Types তৈরি করা

Type System in Haskell (টাইপ সিস্টেম) - হ্যাস্কেল (Haskell) - Computer Programming

313

Haskell এ Custom Data Types তৈরি করা

Haskell একটি শক্তিশালী স্ট্যাটিক টাইপ ভাষা, এবং এতে Custom Data Types তৈরি করা একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। Haskell আপনাকে প্রকার (types) তৈরি করার জন্য একটি শক্তিশালী এবং পরিষ্কার পদ্ধতি প্রদান করে, যা আপনাকে আপনার প্রোগ্রামকে আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। Haskell এ Custom Data Types তৈরি করতে আপনি data কিওয়ার্ড ব্যবহার করেন।


১. Data Types তৈরি করার সাধারণ পদ্ধতি

Haskell এ একটি নতুন কাস্টম ডেটা টাইপ তৈরি করতে data কিওয়ার্ড ব্যবহার করতে হয়, এবং এটি সাধারণত একটি নতুন টাইপ, এর কনস্ট্রাকটর এবং তার প্যারামিটার সহ ডিফাইন করা হয়। ডেটা টাইপের কনস্ট্রাকটরগুলি ডেটা ইনস্ট্যান্স তৈরির সময় ব্যবহার করা হয়।

সাধারণ সিনট্যাক্স:

data TypeName = Constructor1 ConstructorArguments | Constructor2 ConstructorArguments | ...

এখানে, TypeName হল ডেটা টাইপের নাম এবং Constructor1, Constructor2 হল কনস্ট্রাকটরগুলো যা ডেটার বিভিন্ন ধরন বা ক্ষেত্র প্রকাশ করে।


২. একটি সাধারণ কাস্টম ডেটা টাইপ তৈরি করা

ধরা যাক, আমরা একটি Shape নামক কাস্টম ডেটা টাইপ তৈরি করতে চাই, যা বিভিন্ন ধরণের আকৃতির প্রতিনিধিত্ব করবে (যেমন Circle, Rectangle)।

data Shape = Circle Float      -- রেডিয়াস দ্বারা চক্র
           | Rectangle Float Float  -- প্রস্থ এবং উচ্চতা দ্বারা আয়তক্ষেত্র
           | Square Float     -- দৈর্ঘ্য দ্বারা বর্গ

এখানে, Shape একটি কাস্টম ডেটা টাইপ যা তিনটি কনস্ট্রাকটর দিয়ে তৈরি হয়েছে:

  1. Circle: যেটি একটি Float আর্গুমেন্ট নেয়, যা চক্রের রেডিয়াস।
  2. Rectangle: দুটি Float আর্গুমেন্ট নেয়, যা আয়তক্ষেত্রের প্রস্থ এবং উচ্চতা।
  3. Square: একটি Float আর্গুমেন্ট নেয়, যা বর্গের দৈর্ঘ্য।

ব্যবহার:

Prelude> let circle1 = Circle 5
Prelude> let rectangle1 = Rectangle 3 4
Prelude> let square1 = Square 2

এখানে, circle1, rectangle1, এবং square1 হল কাস্টম ডেটা টাইপের উদাহরণ।


৩. Pattern Matching ব্যবহার করে Custom Data Types নিয়ে কাজ করা

একটি কাস্টম ডেটা টাইপ তৈরি করার পরে, আমরা Pattern Matching ব্যবহার করে এর বিভিন্ন কনস্ট্রাকটরের সাথে কাজ করতে পারি। উদাহরণস্বরূপ, আমরা যদি Shape টাইপের ক্ষেত্রগুলি নিয়ে কাজ করতে চাই, তাহলে Pattern Matching এর মাধ্যমে প্রতিটি কনস্ট্রাক্টরের জন্য আলাদা আলাদা কোড লিখতে পারি।

উদাহরণ:

area :: Shape -> Float
area (Circle r) = pi * r * r
area (Rectangle w h) = w * h
area (Square s) = s * s

এখানে, area ফাংশনটি একটি Shape নেয় এবং তার Pattern Matching এর মাধ্যমে ক্ষেত্র বিশেষে উপযুক্ত গণনা করে এর আয়তন বের করে দেয়:

  • Circle কনস্ট্রাকটরের জন্য π * রেডিয়াস²।
  • Rectangle কনস্ট্রাকটরের জন্য প্রস্থ * উচ্চতা।
  • Square কনস্ট্রাকটরের জন্য দৈর্ঘ্য * দৈর্ঘ্য।

ব্যবহার:

Prelude> area (Circle 5)
78.53982

Prelude> area (Rectangle 3 4)
12

Prelude> area (Square 2)
4

এখানে, area ফাংশনটি বিভিন্ন Shape কনস্ট্রাকটরের সাথে Pattern Matching করে আয়তন বের করেছে।


৪. লিস্টের মাধ্যমে Custom Data Types

আপনি Custom Data Types কে লিস্টের মধ্যে ব্যবহার করতে পারেন এবং লিস্টের ওপর অপারেশন চালাতে পারেন। উদাহরণস্বরূপ, ধরুন আমরা একটি লিস্ট তৈরি করেছি যা বিভিন্ন Shape ধারণ করে।

উদাহরণ:

shapes :: [Shape]
shapes = [Circle 5, Rectangle 3 4, Square 2, Circle 10]

এখন আমরা যদি এই লিস্টের সমস্ত আয়তন বের করতে চাই, তবে আমরা map ফাংশন ব্যবহার করতে পারি:

areas :: [Shape] -> [Float]
areas = map area

ব্যবহার:

Prelude> areas shapes
[78.53982,12,4,314.159]

এখানে, map area ফাংশনটি Shape এর লিস্টের প্রতিটি উপাদানের জন্য area ফাংশনটি প্রয়োগ করেছে এবং আয়তন বের করেছে।


৫. Algebraic Data Types (ADT)

Haskell এর Algebraic Data Types (ADT) হল এক ধরনের Sum Types এবং Product Types এর সংমিশ্রণ। উদাহরণস্বরূপ, উপরে Shape টাইপটি Sum Type, কারণ এটি একাধিক কনস্ট্রাকটরের (একটি Circle, Rectangle, Square) সংমিশ্রণ। অন্যদিকে, একটি Product Type হলো টাইপ যা একাধিক ভ্যালু ধারণ করে।

Product Type উদাহরণ:

data Person = Person String Int  -- নাম এবং বয়স

এখানে, Person হল একটি Product Type যেটি দুটি অংশ ধারণ করে:

  • একটি String (নাম)।
  • একটি Int (বয়স)।

এটি Pattern Matching এর মাধ্যমে ব্যবহার করা যেতে পারে:

greet :: Person -> String
greet (Person name age) = "Hello, " ++ name ++ ". You are " ++ show age ++ " years old."

ব্যবহার:

Prelude> greet (Person "Alice" 30)
"Hello, Alice. You are 30 years old."

উপসংহার

Haskell এ Custom Data Types তৈরি করা একটি গুরুত্বপূর্ণ ধারণা, যা ডেটার গঠন এবং কার্যকারিতা পরিষ্কার এবং সুসংগঠিত করতে সহায়ক। আপনি data কিওয়ার্ড ব্যবহার করে Sum Types এবং Product Types তৈরি করতে পারেন, এবং তারপর Pattern Matching এর মাধ্যমে সেই কাস্টম ডেটা টাইপের উপর ভিত্তি করে কার্যক্রম পরিচালনা করতে পারেন। এই বৈশিষ্ট্যগুলি Haskell কোডকে আরও কার্যকর, মডুলার এবং পুনঃব্যবহারযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...