--LICENSE: BSD3 (or also similar, like GHC, etc.) --INITIAL AUTHOR: Isaac Dupree --see IntegerInTermsOfInt.hs - the main file currently module TestingDebug ( traces, sees, assert ) where import Debug.Trace (trace) import Prelude as P --WORKAROUND --default () trace', dbgTrace :: P.String -> a -> a trace' s a = eval s `seq` trace s a where eval :: [a] -> () eval (i:is) = i `seq` eval is eval [] = () doDebugTrace :: Int; doDebugTrace = 1 --INTERESTING dbgTrace = if doDebugTrace /= 0 then trace' else \_ a -> a traces :: (Show a) => a -> b -> b traces a = dbgTrace (show a) sees :: (Show a, Show b) => a -> b -> b sees a b = traces a (traces (("sees",a),b) b) --hmm assert :: (Show info) => info -> Bool -> a -> a assert _message True a = a {- assert message False _a = P.error ("IntegerInTermsOfInt: assertion failed: " P.++ P.show message) -} --In order to work well with QuickCheck, I need assertion failures not to --terminate it! (really, quickcheck should catch errors... assert message False a = trace' ("IntegerInTermsOfInt: assertion failed: " P.++ P.show message) a