デバッグ出力を表示する

Haskell:
デバッグ出力を表示する

How to: (方法)

-- 'putStrLn' を使って文字列を出力する
main :: IO ()
main = do
  putStrLn "Hello, debug!"

-- 'print' を使って変数の内容を出力する
main :: IO ()
main = do
  let number = 42
  print number

例の出力:

Hello, debug!
42

Deep Dive (深く潜る)

Haskellでは、デバッグ出力は副作用を伴うため、IOモナド内で行います。過去には純粋な関数内でデバッグを行うことは推奨されていませんでしたが、今日ではDebug.Traceモジュールのtrace関数を利用することも可能です。

代替方法として、printf関数を使う場合がありますが、これはText.Printfモジュールに含まれています。

import Debug.Trace

-- 'trace' を使って純粋関数でもデバッグ出力をする
myFunc :: Integer -> Integer
myFunc x = trace ("myFunc called with " ++ show x) (x + 1)

main :: IO ()
main = print $ myFunc 10

例の出力:

myFunc called with 10
11

先述のtraceはデバッグ専用であり、本番環境のコードでは避けるべきです。実装の内部で何が行われていて、どのように評価されているか理解することは重要です。

See Also (関連情報)