tools: handy monadic trace

This commit is contained in:
Simon Michael 2010-09-03 23:20:59 +00:00
parent 334974dedd
commit 70bd8bb569

View File

@ -269,10 +269,14 @@ showforest = concatMap showtree
strace :: Show a => a -> a strace :: Show a => a -> a
strace a = trace (show a) a strace a = trace (show a) a
-- | labelled trace - like strace, with a newline and a label prepended -- | labelled trace - like strace, with a label prepended
ltrace :: Show a => String -> a -> a ltrace :: Show a => String -> a -> a
ltrace l a = trace (l ++ ": " ++ show a) a ltrace l a = trace (l ++ ": " ++ show a) a
-- | monadic trace - like strace, but works as a standalone line in a monad
mtrace :: (Monad m, Show a) => a -> m a
mtrace a = strace a `seq` return a
-- | trace an expression using a custom show function -- | trace an expression using a custom show function
tracewith f e = trace (f e) e tracewith f e = trace (f e) e