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.