module Debug
( undefined
, error
, trace
, traceM
, traceIO
, traceShow
, traceShowM
, notImplemented
) where
import Control.Monad (Monad, return)
import Data.String (String)
import Base as P
import qualified Debug.Trace as T
import qualified GHC.Err as P (error, undefined)
undefined :: a
undefined = P.undefined
error :: String -> a
error = P.error
trace :: String -> a -> a
trace = T.trace
traceShow :: P.Show a => a -> b -> b
traceShow a b = T.trace (P.show a) b
traceShowM :: (P.Show a, Monad m) => a -> m ()
traceShowM a = traceM (P.show a)
traceM :: (Monad m) => String -> m ()
traceM s = T.trace s (return ())
traceIO :: String -> P.IO ()
traceIO = T.traceIO
notImplemented :: a
notImplemented = P.error "Not implemented"