Add traceIf function for conditional tracing.
[matthijs/master-project/cλash.git] / cλash / CLasH / Utils.hs
index 2966757a038b1d2fefd6a9db51547a0bcf8d0bff..d85b25b5f415a817a82f54fa5471e1ef5b1aa409 100644 (file)
@@ -7,6 +7,7 @@ import qualified Data.Accessor.Monad.Trans.State as MonadState
 import qualified Data.Map as Map
 import qualified Control.Monad as Monad
 import qualified Control.Monad.Trans.State as State
+import qualified Debug.Trace as Trace
   
 -- Make a caching version of a stateful computatation.
 makeCached :: (Monad m, Ord k) =>
@@ -60,3 +61,9 @@ mapAccumLM f s (x:xs)    =  do
   (s',  y ) <- f s x
   (s'', ys) <- mapAccumLM f s' xs
   return (s'', y:ys)
+
+-- Trace the given string if the given bool is True, do nothing
+-- otherwise.
+traceIf :: Bool -> String -> a -> a
+traceIf True = Trace.trace
+traceIf False = flip const