Haskell:
Skriva ut felsökningsdata

How to:

Att skriva ut debug-meddelanden i Haskell kan göras med print eller putStrLn. Här kommer några exempel:

main :: IO ()
main = do
  putStrLn "This is a debug message"

  let number = 42
  print number  -- print kan hantera alla typer som är en instans av Show

Kör du detta får du följande utskrift:

This is a debug message
42

Deep Dive

I Haskell’s tidiga dagar var I/O, inklusive enkel utskrift, omständlig på grund av språkets rena funktionsnatur. Nu har vi IO monaden som hanterar effekter. För debug-ändamål kan Debug.Trace också användas, men den bör undvikas i produktionskod eftersom den får sidoeffekter i vad som ser ut att vara ren kod. Vi har också printf från Text.Printf för formaterad text, som är lik printf i C.

import Debug.Trace (trace)

traceExample :: Int -> Int -> Int
traceExample x y = trace ("Adding " ++ show x ++ " and " ++ show y) (x + y)

Användning av trace ska dock användas med försiktighet då det kan orsaka svåråtkomliga buggar. Andra verktyg för debugging, som GHCi’s debugger och mer specialiserade bibliotek finns, som kan vara lämpligare för avancerade behov.

See Also