precursor-0.1.0.0: src/Precursor/Debug.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Precursor.Debug
( undefined
, trace
, traceShow
, notImplemented
) where
import Precursor.Control.Functor
import Precursor.System.IO
import Prelude (error, undefined)
import System.IO.Unsafe (unsafePerformIO)
import Precursor.Text.Text
import Precursor.Text.Show
{-# WARNING trace "'trace' remains in code" #-}
-- | Used for tracing a message along with a pure value. For debugging
-- purposes only.
trace :: Text -> b -> b
trace msg x = unsafePerformIO (putStrLn msg $> x)
{-# WARNING notImplemented "'notImplemented' remains in code" #-}
-- | Used to fill in holes in code for later implementation.
notImplemented :: a
notImplemented = error "Not implemented"
{-# WARNING traceShow "'traceShow' remains in code" #-}
-- | Prints a value to stdout when it's evaluated. For debugging
-- purposes only.
traceShow :: TextShow a => a -> a
traceShow x = trace (show x) x