9

何かを印刷してプログラムをデバッグしたい

例えば、

isPos n 
    | n<0       = False
    | otherwise = True

私は次のようなものが欲しい:

isPos n 
    | n<0       = False AND print ("negative")
    | otherwise = True  AND print ("positive")

Haskellで行うことは可能ですか?

4

2 に答える 2

20

ハンマーが言ったようtraceに、モジュールから使用しDebug.Traceます。私が役立つと思ったヒントは、関数を定義することですdebug

debug = flip trace

その後、あなたはすることができます

isPos n
  | n < 0     = False `debug` "negative"
  | otherwise = True  `debug` "positive"

これの利点は、開発中にデバッグ印刷を簡単に有効/無効にできることです。デバッグ印刷を削除するには、残りの行をコメントアウトするだけです。

isPos n
  | n < 0     = False -- `debug` "negative"
  | otherwise = True  -- `debug` "positive"
于 2012-09-23T12:17:45.183 に答える
18

を使用しDebug.Trace.traceます。

import Debug.Trace

isPos n 
  | n < 0     = trace "negative" False
  | otherwise = trace "positive" True 
于 2012-09-23T06:50:03.273 に答える