There is for debugging
import Debug.Trace funct :: Integer -> [Integer] -> Bool funct a list = trace (show list) $ funct (a + 1) (a : list)
where trace :: String -> a -> a
. It uses unsafePerformIO
under the hood, so it is evil and only for debugging.
Remember that due to lazy evaluation, the debug output may appear in unexpected order and alternates with the output that the program usually generates.
FROM
module TraceIt where import Debug.Trace funct :: Integer -> [Integer] -> Bool funct 10 list = null list funct a list = trace (show list) $ funct (a + 1) (a : list)
I get
*TraceIt> funct 1 [] [] [1] [2,1] [3,2,1] [4,3,2,1] [5,4,3,2,1] [6,5,4,3,2,1] [7,6,5,4,3,2,1] [8,7,6,5,4,3,2,1] False
as was expected.