-------------------------------------------------------------------------------
-- |
-- Module : Logic.Debug
-- Stability : experimental
-- Portability : portable
--
-- Some functions for debugging purposes, wrapping the functions from
-- `Debug.Trace`. These functions inhibit output when `development` is `False`
module Logic.Debug
( debugShow
, debugId
, debug
, debugShowM
, debugM
, debug'
) where
import Prelude
import Settings.Development (development)
import Debug.Trace
debugShow :: Show a => a -> b -> b
debugShow = if development then traceShow else flip const
debug :: String -> a -> a
debug = if development then trace else flip const
debug' :: (a -> String) -> a -> a
debug' f x = debug (f x) x
debugId :: Show a => a -> a
debugId x = debugShow x x
debugShowM :: (Show a, Monad m) => a -> m ()
debugShowM = flip debugShow (return ())
debugM :: (Monad m) => String -> m ()
debugM = flip debug (return ())