infernu-0.0.0.1: src/Infernu/Log.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE BangPatterns #-}
module Infernu.Log
(trace, tracePretty, traceLog, traceLogVal)
where
import Infernu.Prelude
import Infernu.Pretty
#if TRACE
import Debug.Trace (trace)
#else
trace :: a -> b -> b
trace _ y = y
#endif
tracePretty :: Pretty a => String -> a -> a
tracePretty prefix x = trace (prefix ++ " " ++ pretty x) x
traceLogVal :: Applicative f => String -> a -> f a
traceLogVal !s !r = pure $! trace s r `seq` r
traceLog :: Applicative f => String -> f ()
traceLog !s = pure $! trace s () `seq` ()