Haskell এ Standard Input এবং Output
Haskell এ Standard Input এবং Standard Output এর মাধ্যমে ইউজার থেকে ইনপুট নেওয়া এবং আউটপুট প্রদর্শন করা যায়। যেহেতু Haskell একটি পিওর ফাংশনাল ভাষা এবং ইমিউটেবল ডেটার উপর কাজ করে, তাই ইনপুট এবং আউটপুট পরিচালনা করতে Haskell এ IO টাইপ ব্যবহার করা হয়।
Standard Output
Standard Output এর মাধ্যমে প্রোগ্রামের আউটপুট প্রদর্শন করা হয়। Haskell এ প্রাথমিক আউটপুট প্রদানের জন্য সাধারণত print এবং putStrLn ফাংশনগুলো ব্যবহার করা হয়।
1. putStrLn
putStrLn একটি String ইনপুট নেয় এবং তা প্রিন্ট করে, শেষে একটি নতুন লাইন যোগ করে।
উদাহরণ:
main :: IO ()
main = do
putStrLn "Hello, Haskell!" -- আউটপুট: Hello, Haskell!2. print
print একটি Show টাইপের ডেটা গ্রহণ করে এবং তা String আকারে কনভার্ট করে আউটপুট প্রদর্শন করে। এটি সংখ্যাসহ অন্যান্য ডেটা টাইপের জন্যও ব্যবহারযোগ্য।
উদাহরণ:
main :: IO ()
main = do
print 42 -- আউটপুট: 42
print [1, 2, 3, 4] -- আউটপুট: [1,2,3,4]Standard Input
Standard Input এর মাধ্যমে ইউজার থেকে ইনপুট নেওয়া হয়। Haskell এ ইনপুট নেওয়ার জন্য getLine এবং getChar ফাংশন ব্যবহার করা হয়।
1. getLine
getLine একটি সম্পূর্ণ লাইন ইনপুট হিসেবে গ্রহণ করে এবং এটি একটি IO String টাইপের মান রিটার্ন করে।
উদাহরণ:
main :: IO ()
main = do
putStrLn "Enter your name:"
name <- getLine
putStrLn ("Hello, " ++ name ++ "!")এখানে, getLine ইউজারের নাম ইনপুট হিসেবে গ্রহণ করে এবং name এ সংরক্ষণ করে, তারপর সেই নামের সাথে Hello মেসেজ প্রিন্ট করে।
2. getChar
getChar ইনপুট হিসেবে একটি অক্ষর গ্রহণ করে এবং এটি একটি IO Char টাইপের মান রিটার্ন করে।
উদাহরণ:
main :: IO ()
main = do
putStrLn "Enter a character:"
char <- getChar
putStrLn ("\nYou entered: " ++ [char])এখানে, getChar একটি অক্ষর ইনপুট হিসেবে গ্রহণ করে এবং char এ সংরক্ষণ করে, তারপর সেই অক্ষর প্রদর্শন করে।
পূর্ণাঙ্গ উদাহরণ: ইনপুট নিয়ে প্রোগ্রাম চালানো
নিচে একটি উদাহরণ দেওয়া হলো, যেখানে ইউজারের কাছ থেকে দুটি সংখ্যা ইনপুট নিয়ে তাদের যোগফল প্রদর্শন করা হয়েছে।
main :: IO ()
main = do
putStrLn "Enter first number:"
input1 <- getLine
putStrLn "Enter second number:"
input2 <- getLine
let number1 = read input1 :: Int
let number2 = read input2 :: Int
let sum = number1 + number2
putStrLn ("The sum is: " ++ show sum)এখানে,
getLineদুটি ইনপুট গ্রহণ করে, যা স্ট্রিং আকারে থাকে।readফাংশন ব্যবহার করে স্ট্রিংগুলিকেIntটাইপে রূপান্তর করা হয়।- তারপর যোগফল
sumএ সংরক্ষণ করা হয় এবংshowফাংশনের মাধ্যমে তা আউটপুট হিসেবে প্রদর্শন করা হয়।
do নোটেশন এবং IO অপারেশন
Haskell এ do নোটেশন ব্যবহার করে একাধিক IO অপারেশন পরপর লেখা যায়। do ব্লকের প্রতিটি লাইন একটি পৃথক IO অপারেশন এবং এগুলো ক্রমান্বয়ে সম্পন্ন হয়।
উদাহরণ:
main :: IO ()
main = do
putStrLn "Enter your age:"
age <- getLine
let ageNum = read age :: Int
putStrLn ("In five years, you will be " ++ show (ageNum + 5) ++ " years old.")এখানে,
- প্রথমে
getLineইউজারের বয়স ইনপুট নেয়। readফাংশনের মাধ্যমে স্ট্রিংকেIntতে রূপান্তর করা হয়।- তারপর, পাঁচ বছর পরের বয়স হিসাব করে আউটপুট দেওয়া হয়।
উপসংহার
Haskell এ Standard Input এবং Standard Output প্রোগ্রামের সঙ্গে ইউজারের যোগাযোগের জন্য ব্যবহৃত হয়। putStrLn, print, getLine, এবং getChar এর মতো ফাংশনগুলো ব্যবহার করে আমরা সহজে ইনপুট নিয়ে আউটপুট প্রদর্শন করতে পারি। do নোটেশন ব্যবহার করে একাধিক IO অপারেশন একত্রে লেখা সম্ভব, যা প্রোগ্রামিংকে আরও সহজ এবং ধারাবাহিক করে তোলে।
Read more