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