dawgdic-0.1.0: src-trace/Data/DAWG/Trace.hs
module Data.DAWG.Trace where
import Control.Monad.Primitive (PrimMonad)
import System.IO.Unsafe
import Unsafe.Coerce (unsafeCoerce)
import qualified Data.Vector.Hashtables as HT
traceIO :: PrimMonad m => String -> m ()
traceIO str = HT.unsafeIOToPrim . putStrLn $ str
traceWith :: forall a b m. PrimMonad m => (b -> IO ()) -> a -> m ()
traceWith action a = (HT.unsafeIOToPrim . action . unsafeCoerce) a
tracePure :: String -> a -> a
tracePure str a = unsafePerformIO do
traceIO str
pure $! a