packages feed

barrie-0.3.1: src/Barrie/Trace.lhs

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")