Haskell:
ডিবাগ আউটপুট প্রিন্ট করা
কিভাবে:
Haskell এ ডিবাগ তথ্য প্রিন্ট করার একটি সোজাসাপ্টা উপায় হল print ফাংশন ব্যবহার করা, যা একটি মান নেয় যা Show টাইপক্লাসের একটি ইন্সট্যান্স এবং এটি কনসোলে আউটপুট করে।
main :: IO ()
main = do
let number = 42
print number
putStrLn "Haskell এ ডিবাগিং খুবই সহজ!"
-- আউটপুট:
-- 42
-- Haskell এ ডিবাগিং খুবই সহজ!আরো জটিল ডাটা স্ট্রাকচারের জন্য, সুন্দর প্রিন্টিং সক্রিয় করতে Show অনুমোদন করতে হবে:
data Cake = Chocolate | Vanilla deriving Show
debugFlavor :: Cake -> IO ()
debugFlavor flavor = print flavor
main :: IO ()
main = debugFlavor Chocolate
-- আউটপুট:
-- Chocolateমাঝে মাঝে আমরা অস্থায়ী ডিবাগিং চাই যা পরে সহজে সরানো যায়। Debug.Trace মডিউল এখানে প্রবেশ করে।
import Debug.Trace (trace)
main :: IO ()
main = putStrLn $ trace "প্রথমে এটি প্রিন্ট হবে" "দ্বিতীয়বার এটি প্রিন্ট হবে"
-- আউটপুট:
-- প্রথমে এটি প্রিন্ট হবে
-- দ্বিতীয়বার এটি প্রিন্ট হবেtrace ফাংশনটি স্ট্রিংটি প্রিন্ট করে যখন মানটি মূল্যায়িত হয়, কিন্তু কোডের পরিষ্কার অংশে এটি একটি পার্শ্ব প্রভাব। এটি উপযোগী, কিন্তু সাবধানে ব্যবহার করুন!
গভীর ডাইভ
পুরনো দিনগুলিতে, ডিবাগিং হয়তো ছিল “প্রিন্ট স্টেটমেন্ট” ট্রিক। Haskell এই সঙ্গে একটি ফাংশনাল মোড় এবং আরও পরিষ্কার ডিবাগ প্র্যাকটিসের জন্য টুলস অফার করে। পূর্বে আলোচিত print এবং Debug.Trace মডিউল অন্তর্ভুক্ত।
print-এর পরিবর্তনগুলিতে putStrLn স্ট্রিংগুলির জন্য এবং স্বয়ংক্রিয় নিউলাইন না হওয়ার ক্ষেত্রে putStr অন্তর্ভুক্ত থাকে। Debug.Trace এর ভেরিয়েন্ট যেমন traceShow সরাসরি Show ইনস্ট্যান্সগুলির সাথে কাজ করে, যা show কলটি বাঁচায়।
বাস্তবায়নের বিস্তারিত বিবরণ হল, print মূলত putStrLn . show। এটি stdout-এ যে১কোনো Show যোগ্য ডাটা প্রিন্ট করে। অন্যদিকে, Debug.Trace ফাংশনগুলি উন্নয়নের সময় অস্থায়ী ব্যবহারের জন্য মানা হয়। এগুলি পরিষ্কার কোডে প্রবেশ করে এবং নির্দেশক স্বচ্ছতার লঙ্ঘন করে, যা দীর্ঘায়িত ব্যবহারের ক্ষেত্রে নিষিদ্ধ।
গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলির জন্য লগিং লাইব্রেরিগুলি না ভুলে যেগুলো বেশি নিয়ন্ত্রণ এবং “ডিবাগ বাই প্রিন্ট” এর তুলনায় কম অফার করে।
আরো দেখুন
Debug.Traceডকুমেন্টেশন: https://hackage.haskell.org/package/base/docs/Debug-Trace.html- ডিবাগিং সম্পর্কে Haskell Wiki: https://wiki.haskell.org/Debugging
- কেন
Debug.Traceব্যবহার করা খারাপ প্র্যাকটিস এবং এর পরিবর্তে কি করা উচিৎ, এই বিষয়ে একটি ভালো আলোচনা: https://stackoverflow.com/questions/7741400/why-is-using-debug-trace-considered-bad-practice