-- Module for enabling trace module Barrie.Trace (enableTrace, traceMessage) where import Data.IORef import System.IO.Unsafe traceFile :: IORef (Maybe String) traceFile = unsafePerformIO $ newIORef Nothing enableTrace :: String -> IO () enableTrace fileName = do writeIORef traceFile (Just fileName) traceMessage :: String -> IO () traceMessage msg = do fileName <- readIORef traceFile case fileName of Nothing -> return () Just name -> appendFile name (msg ++ "\n")