Haskell:
টেক্সট ফাইল পড়া
কীভাবে:
হাসকেল দিয়ে কীভাবে টেক্সট ফাইল পড়তে হয় তা না ভাঙ্গাচোরা করে এখানে দেখানো হলো। আপনার প্রিয় সম্পাদক খুলুন, এবং আমরা কিছু কোড লিখি।
import System.IO
main = do
-- ফাইলটি পড়ার মোডে খুলতে
handle <- openFile "hello.txt" ReadMode
-- ফাইলের বিষয়বস্তু পড়তে
content <- hGetContents handle
-- ফাইলের বিষয়বস্তু প্রিন্ট করতে
putStrLn content
-- ফাইল হ্যান্ডেল বন্ধ না করার কথা ভুলবেন না!
hClose handle
এটি চালান, এবং যদি আপনার “hello.txt” মধ্যে “Hello, World!” থাকে, আপনি পাবেন:
Hello, World!
এখানে আরেকটি ছোট এবং ঝকঝকে উপায়, কম ঝক্কি নিয়ে একই কাজ:
-- 'readFile' খোলা এবং পড়া এক সঙ্গে করে
main = do
content <- readFile "hello.txt"
putStrLn content
আউটপুট এখনও,
Hello, World!
গভীর ডুব
বহু আগে, প্রোগ্রামগুলি ছিল অসামাজিক প্রাণী, মূলত নিজেদের উত্পন্ন ডেটা প্রক্রিয়া করে। কিন্তু জটিলতা বাড়তে থাকে, এবং বাহ্যিক তথ্য আনার প্রয়োজনও বাড়তে থাকে, তাই ফাইল থেকে পড়া একটি মূল অংশ হয়ে ওঠে।
হাসকেলে বিভিন্ন উপায়ে ফাইল পড়া যায়। আমরা openFile
, hGetContents
, এবং hClose
এর মাধ্যমে নিম্ন-স্তরে এটি করতে পারি অথবা readFile
দিয়ে খেলতে পারি, যা সবকিছু গোছালো করে।
readFile
হল অলস - এটি যখন প্রয়োজন হয় তখন বিষয়বস্তু পড়ে, যা বড় ফাইলের জন্য মেমোরি দক্ষ কিন্তু যদি ফাইলটি মাঝপথে পরিবর্তন হয় তবে এটি আশ্চর্যজনক হতে পারে। নিম্ন-স্তরের পদ্ধতিটি আরও নিয়ন্ত্রণ দেয়, যা এটিকে আরও প্রেডিক্টেবল কিন্তু একই সঙ্গে বাকপটু করে তোলে। বিশাল টেক্সটের জন্য, হাসকেলের hGetLine
বা conduit
এবং pipes
এর মতো লাইব্রেরিগুলি মেমোরি এবং প্রক্রিয়াজাতকরণ আরও সূক্ষ্মভাবে পরিচালনা করার সুযোগ দেয়।
হাসকেলের মানক IO
কার্যাবলী ফাইলগুলিকে মৌলিক OS পদ্ধতিগুলি ব্যবহার করে হ্যান্ডল করে। লাইব্রেরিগুলি এই অপারেশনগুলিকে বেশি ব্যবহারকারী-বান্ধব করে তোলে কিন্তু শেষ পর্যন্ত, তারা হাসকেলের IO
মোনাডের উপর নির্মিত, যা নিশ্চিত করে যে কার্যাবলীগুলি সঠিক ক্রমে ঘটে।
আরও দেখুন
- অফিশিয়াল হাসকেল ডকুমেন্টেশনের জন্য, হাসকেলের ইনপুট এবং আউটপুট ডকুমেন্টেশন দেখুন।
- আরও জানার জন্য, Learn You a Haskell for Great Good!-এ জ্ঞানের এক কাপ উপভোগ করুন।
- ফাইল ম্যানেজমেন্টের গভীর বোঝাপড়া পেতে Real World Haskell’s take on IO-এ গভীর ডুব দিন।
- বড় ফাইলগুলির জন্য স্ট্রিমিং লাইব্রেরিগুলি অন্বেষণ করতে conduit এবং pipes দেখুন।