Tuples এবং Lists এর ব্যবহার

ডেটা টাইপস এবং ভেরিয়েবলস (Data Types and Variables in Haskell) - হ্যাস্কেল (Haskell) - Computer Programming

346

Haskell এ Tuples এবং Lists এর ব্যবহার

Haskell একটি ফাংশনাল প্রোগ্রামিং ভাষা, যেখানে Tuples এবং Lists অত্যন্ত গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। এগুলি প্রোগ্রামিংয়ের বিভিন্ন ধরনের ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। Tuples এবং Lists এর মধ্যে কিছু মৌলিক পার্থক্য রয়েছে, এবং তাদের ব্যবহারের ক্ষেত্রেও পার্থক্য রয়েছে।


1. Tuples (টাপলস)

Tuple হল একটি ডেটা স্ট্রাকচার যা একাধিক উপাদান ধারণ করতে পারে, এবং প্রতিটি উপাদান আলাদা আলাদা টাইপের হতে পারে। এটি মূলত একটি ফিক্সড সাইজ ডেটা স্ট্রাকচার, অর্থাৎ একটি Tuple এর আকার বা সংখ্যা একবার সেট হয়ে গেলে তা পরিবর্তন করা যায় না।

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

  • একটি Tuple একাধিক ভিন্ন ধরনের মান ধারণ করতে পারে।
  • সাধারণত একটি দ্বিতীয়ক (pair), তৃতীয়ক (triple), বা তার বেশি উপাদান ধারণ করতে ব্যবহৃত হয়।
  • Tuple গুলির আকার এবং উপাদান সংখ্যা নির্দিষ্ট থাকে।
  • একটি Tuple এর উপাদানগুলি ইনডেক্স বা পরিসংখ্যানের মাধ্যমে অ্যাক্সেস করা সম্ভব নয়।

Tuples এর সিনট্যাক্স:

Tuple এর উপাদানগুলি কমা দিয়ে আলাদা করা হয় এবং কোণের বন্ধনী (parentheses) {} দিয়ে ঘেরা থাকে।

উদাহরণ:

-- একটি Tuple যা দুটি উপাদান ধারণ করে
myTuple :: (Int, String)
myTuple = (5, "Haskell")

-- একটি Tuple যা তিনটি উপাদান ধারণ করে
myTriple :: (Int, String, Bool)
myTriple = (1, "Hello", True)

Tuples এর ব্যবহার:

  • ফাংশন থেকে একাধিক মান ফেরত দেওয়া:
    Tuples এর মাধ্যমে আপনি একসাথে একাধিক মান ফেরত দিতে পারেন।

উদাহরণ:

getCoordinates :: (Int, Int)  -- ফাংশনটি দুটি সংখ্যা ফেরত দেয়
getCoordinates = (10, 20)

-- একাধিক মান বের করা
(x, y) = getCoordinates  -- x = 10, y = 20
  • ডেটা গ্রুপিং: Tuple গুলি বিভিন্ন ধরনের তথ্য একত্রিত করার জন্য ব্যবহৃত হয়, যেমন একটি ছাত্রের নাম, বয়স এবং গ্রেড একসাথে সংরক্ষণ করতে।

2. Lists (লিস্টস)

List হল একটি ডেটা স্ট্রাকচার যা সমজাতীয় উপাদান ধারণ করে এবং একে অপরের সাথে সংযুক্ত থাকে। হ্যাসকেল এ লিস্ট গুলি লিঙ্কড এবং অর্ডারড থাকে, অর্থাৎ এলিমেন্টগুলির মধ্যে একটি নির্দিষ্ট সিকোয়েন্স থাকে এবং এটি একটি ডেটা স্ট্রাকচার যা অন্যান্য উপাদানের সাথে সম্পর্কযুক্ত।

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

  • List এর সব উপাদান অবশ্যই একই ধরনের হতে হবে।
  • এটি ডাইনামিক সাইজ ডেটা স্ট্রাকচার, অর্থাৎ একে আরও উপাদান যোগ করা বা মুছে ফেলা যায়।
  • Nil (খালি লিস্ট) থেকে শুরু হয়, এবং একাধিক উপাদান সংযুক্ত থাকে।

Lists এর সিনট্যাক্স:

লিস্টের উপাদানগুলি সমরেখায় লেখা হয় এবং সেগুলি কমা দিয়ে আলাদা করা হয়।

উদাহরণ:

-- একটি সংখ্যা সম্বলিত লিস্ট
numbers :: [Int]
numbers = [1, 2, 3, 4, 5]

-- একটি স্ট্রিং সম্বলিত লিস্ট
wordsList :: [String]
wordsList = ["apple", "banana", "cherry"]

Lists এর ব্যবহার:

  • লিস্টে এলিমেন্ট অ্যাক্সেস: লিস্টে এলিমেন্ট অ্যাক্সেস করার জন্য ইনডেক্স ব্যবহার করা হয়। তবে Haskell একটি ইম্যুটেবল ভাষা হওয়ায়, এখানে কোন পরিবর্তন করা যায় না, তবে নতুন উপাদান যোগ বা পুরনো উপাদান বাদ দেয়া যায়।

উদাহরণ:

-- প্রথম এলিমেন্ট প্রাপ্তি
firstElement = head numbers  -- 1

-- শেষ এলিমেন্ট প্রাপ্তি
lastElement = last numbers   -- 5

-- লিস্টের দৈর্ঘ্য
listLength = length numbers  -- 5
  • ফাংশনাল অপারেশন: লিস্টের উপরে বিভিন্ন ফাংশনাল অপারেশন যেমন map, filter, foldr, foldl ইত্যাদি ব্যবহার করা হয়।

উদাহরণ:

-- সকল সংখ্যার উপর 2 যোগ করা
incrementList = map (+2) numbers  -- [3, 4, 5, 6, 7]

-- পজিটিভ সংখ্যাগুলি ফিল্টার করা
positiveNumbers = filter (>0) numbers  -- [1, 2, 3, 4, 5]
  • লিস্ট কনক্যাটেনেশন: দুটি লিস্ট একত্রিত করার জন্য ++ অপারেটর ব্যবহার করা হয়।

উদাহরণ:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
mergedList = list1 ++ list2  -- [1, 2, 3, 4, 5, 6]

Tuples এবং Lists এর মধ্যে পার্থক্য:

বৈশিষ্ট্যTupleList
টাইপবিভিন্ন ধরনের মান থাকতে পারেএক ধরনের উপাদান থাকতে হবে
সাইজনির্দিষ্ট সাইজের (ফিক্সড)ডাইনামিক সাইজ
ইন্ডেক্সিংশুধুমাত্র প্রথম উপাদান, দ্বিতীয় উপাদান ইত্যাদি সরাসরি অ্যাক্সেস করা যায়সমস্ত উপাদান একই ধরনের, সহজেই অ্যাক্সেসযোগ্য
ব্যবহারএকাধিক টাইপের মান সংরক্ষণের জন্যএক ধরনের উপাদানগুলির সিকোয়েন্সের জন্য

উপসংহার

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

Content added By
Promotion

Are you sure to start over?

Loading...