Haskell:
Debug-Ausgaben drucken

So Geht’s:

main :: IO ()
main = do
  let zahl = 42
  putStrLn $ "Die Zahl ist: " ++ show zahl
  -- Direktes Debugging mit einer einfachen Ausgabe

Ausgabe:

Die Zahl ist: 42

Nutzen Sie Debug.Trace für Nebenläufigkeits-Debugging:

import Debug.Trace (trace)

main :: IO ()
main = do
  let ergebnis = trace "Hier wird addiert." (1 + 1)
  putStrLn $ "Das Ergebnis ist: " ++ show ergebnis

Ausgabe:

Hier wird addiert.
Das Ergebnis ist: 2

Vertiefung:

Das Drucken von Debug-Ausgaben ist ein altbekanntes Verfahren, das seit den Anfängen der Programmierung verwendet wird, um den Ablauf von Programmen nachzuvollziehen. In Haskell ist das direkte Drucken mit putStrLn etwas Besonderes, weil Haskell eine rein funktionale Sprache ist. Side-Effekte, wie das Drucken auf die Konsole, werden in einem IO-Kontext gehandhabt.

Es gibt Alternativen zum Einbau von Debug-Ausgaben direkt im Code: Interaktive Debugger wie ghci ermöglichen das Setzen von Breakpoints und das Inspektieren von Variablen ohne Code-Änderungen. Auch Tools wie Trace oder Debug.Trace sind praktisch, da sie es ermöglichen, Werte zu protokollieren, ohne den Programmfluss zu ändern. Im Produktionscode sollten sie trotzdem vermieden werden.

Implementierungsdetails hängen von der Wahl der Funktion oder des Werkzeugs ab: Während putStrLn klar dafür gedacht ist, Strings auszugeben, ermöglicht Debug.Trace das Einfügen von Debug-Meldungen, die bei der Auswertung von Ausdrücken angezeigt werden, was in der rein funktionalen Welt Haskell’s besonders nützlich ist.

Siehe Auch: