Haskell:
ডিবাগার ব্যবহার করা
কিভাবে:
আসুন একটি পথচলায় যাই GHCi এর সাথে, Haskell এর ইন্টার্যাকটিভ পরিবেশ যা একটি মৌলিক ডিবাগার হিসেবে কাজ করতে পারে। আপনি আপনার Haskell কোড দিয়ে এটি চালু করেন এবং আশেপাশে নাড়াচাড়া করা শুরু করেন। এখানে একটি উদাহরণ:
main :: IO ()
main = do
putStrLn "হেই, তোমার নাম কি?"
name <- getLine
putStrLn $ "হ্যালো, " ++ name ++ "! চলো ডিবাগ করি।"
let result = buggyFunction 5
print result
buggyFunction :: Int -> Int
buggyFunction n = n * 2 -- ধরুন এখানে একটি বাগ রয়েছে
GHCi এর সাথে ডিবাগিং শুরু করতে:
$ ghci YourHaskellFile.hs
buggyFunction
এ একটি ব্রেকপয়েন্ট সেট করুন:
Prelude> :break buggyFunction
আপনার প্রোগ্রাম চালান:
Prelude> :main
হেই, তোমার নাম কি?
আপনার প্রোগ্রাম buggyFunction
এ থেমে যায়। এখন আপনি ভ্যারিয়েবল পরীক্ষা করতে, কোডের মধ্যে ধাপে ধাপে এগোতে এবং এক্সপ্রেশন মূল্যায়ন করতে পারেন।
গভীর ডুব:
ঐতিহাসিক দিক দিয়ে, Haskell এর শুদ্ধ ফাংশন এবং শক্তিশালী টাইপিং এর কারণে মনে করা হতো যে ডিবাগার সরঞ্জামগুলি কম গুরুত্বপূর্ণ। বাস্তবিকতা আলাদা-জটিল প্রোগ্রামগুলি সর্বদা ভালো ডিবাগিং সরঞ্জাম থেকে উপকার পায়। GHCi মৌলিক ডিবাগিং কমান্ড প্রদান করে। তবে, একটি আরো ভিজ্যুয়াল অভিজ্ঞতা বা বৃহত্তর আকারের অ্যাপ্লিকেশনের জন্য, আপনি Visual Studio Code এর Haskell এক্সটেনশনগুলি বা IntelliJ এর Haskell প্লাগিন যেমন IDE গুলিতে ইন্টিগ্রেটেড ডিবাগারে খোঁজ করতে পারেন।
ডিবাগারের বিকল্প হিসেবে প্রিন্ট স্টেটমেন্টগুলি ব্যবহার করা অন্তর্ভুক্ত, যা “printf ডিবাগিং” নামে পরিচিত, অথবা Haskell এর শক্তিশালী টাইপ সিস্টেম ব্যবহার করে ভুল অবস্থাগুলিকে অপ্রতিনিধিত করা। তবে, মাঝে মাঝে কোডের মধ্যে ধাপে ধাপে এগোনোর জন্য এর কোনো বিকল্প নেই।
বাস্তবায়নের বিস্তারিত হিসেবে, Haskell এর ডিবাগার রানটাইম সিস্টেমের সাথে কাজ করে। এটি ব্রেকপয়েন্ট, ধাপ নির্বাহ, এবং ভ্যারিয়েবল পরীক্ষার মতো বিষয়গুলিকে সামলাতে পারে। তবে, Haskell এর আলস্যপ্রবণ মূল্যায়নের কারণে, জিনিসগুলি কিছুটা অ-স্বাভাবিক হতে পারে। Haskell প্রোগ্রাম ডিবাগ করা মানে অভিব্যক্তিগুলি কখন এবং কিভাবে মূল্যায়ন করা হচ্ছে তা নজরে রাখা।