module Debug.Trace.File
(
traceFile
, traceFileW
, traceFileId
, traceFileIdW
, traceFileShow
, traceFileShowW
, traceFileShowId
, traceFileShowIdW
, traceFileWith
, traceFileWithW
, traceFileShowWith
, traceFileShowWithW
, traceFileM
, traceFileMW
, traceFileShowM
, traceFileShowMW
) where
import Data.Functor (($>))
import System.IO.Unsafe (unsafePerformIO)
traceFile :: FilePath -> String -> a -> a
traceFile :: forall a. FilePath -> FilePath -> a -> a
traceFile = forall a.
(FilePath -> FilePath -> IO ()) -> FilePath -> FilePath -> a -> a
traceInternal FilePath -> FilePath -> IO ()
appendFile
traceFileW :: FilePath -> String -> a -> a
traceFileW :: forall a. FilePath -> FilePath -> a -> a
traceFileW = forall a.
(FilePath -> FilePath -> IO ()) -> FilePath -> FilePath -> a -> a
traceInternal FilePath -> FilePath -> IO ()
writeFile
traceFileId :: FilePath -> String -> String
traceFileId :: FilePath -> FilePath -> FilePath
traceFileId FilePath
fp FilePath
a = forall a. FilePath -> FilePath -> a -> a
traceFile FilePath
fp FilePath
a FilePath
a
traceFileIdW :: FilePath -> String -> String
traceFileIdW :: FilePath -> FilePath -> FilePath
traceFileIdW FilePath
fp FilePath
a = forall a. FilePath -> FilePath -> a -> a
traceFileW FilePath
fp FilePath
a FilePath
a
traceFileShow :: Show a => FilePath -> a -> b -> b
traceFileShow :: forall a b. Show a => FilePath -> a -> b -> b
traceFileShow FilePath
fp = forall a. FilePath -> FilePath -> a -> a
traceFile FilePath
fp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> FilePath
show
traceFileShowW :: Show a => FilePath -> a -> b -> b
traceFileShowW :: forall a b. Show a => FilePath -> a -> b -> b
traceFileShowW FilePath
fp = forall a. FilePath -> FilePath -> a -> a
traceFileW FilePath
fp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> FilePath
show
traceFileShowId :: Show a => FilePath -> a -> a
traceFileShowId :: forall a. Show a => FilePath -> a -> a
traceFileShowId FilePath
fp a
a = forall a. FilePath -> FilePath -> a -> a
traceFile FilePath
fp (forall a. Show a => a -> FilePath
show a
a) a
a
traceFileShowIdW :: Show a => FilePath -> a -> a
traceFileShowIdW :: forall a. Show a => FilePath -> a -> a
traceFileShowIdW FilePath
fp a
a = forall a. FilePath -> FilePath -> a -> a
traceFileW FilePath
fp (forall a. Show a => a -> FilePath
show a
a) a
a
traceFileWith :: FilePath -> (a -> String) -> a -> a
traceFileWith :: forall a. FilePath -> (a -> FilePath) -> a -> a
traceFileWith FilePath
fp a -> FilePath
f a
a = forall a. FilePath -> FilePath -> a -> a
traceFile FilePath
fp (a -> FilePath
f a
a) a
a
traceFileWithW :: FilePath -> (a -> String) -> a -> a
traceFileWithW :: forall a. FilePath -> (a -> FilePath) -> a -> a
traceFileWithW FilePath
fp a -> FilePath
f a
a = forall a. FilePath -> FilePath -> a -> a
traceFileW FilePath
fp (a -> FilePath
f a
a) a
a
traceFileShowWith :: Show b => FilePath -> (a -> b) -> a -> a
traceFileShowWith :: forall b a. Show b => FilePath -> (a -> b) -> a -> a
traceFileShowWith FilePath
fp a -> b
f = forall a. FilePath -> (a -> FilePath) -> a -> a
traceFileWith FilePath
fp (forall a. Show a => a -> FilePath
show forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> b
f)
traceFileShowWithW :: Show b => FilePath -> (a -> b) -> a -> a
traceFileShowWithW :: forall b a. Show b => FilePath -> (a -> b) -> a -> a
traceFileShowWithW FilePath
fp a -> b
f = forall a. FilePath -> (a -> FilePath) -> a -> a
traceFileWithW FilePath
fp (forall a. Show a => a -> FilePath
show forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> b
f)
traceFileM :: Applicative f => FilePath -> String -> f ()
traceFileM :: forall (f :: * -> *). Applicative f => FilePath -> FilePath -> f ()
traceFileM FilePath
fp FilePath
string = forall a. FilePath -> FilePath -> a -> a
traceFile FilePath
fp FilePath
string forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
traceFileMW :: Applicative f => FilePath -> String -> f ()
traceFileMW :: forall (f :: * -> *). Applicative f => FilePath -> FilePath -> f ()
traceFileMW FilePath
fp FilePath
string = forall a. FilePath -> FilePath -> a -> a
traceFileW FilePath
fp FilePath
string forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
traceFileShowM :: (Show a, Applicative f) => FilePath -> a -> f ()
traceFileShowM :: forall a (f :: * -> *).
(Show a, Applicative f) =>
FilePath -> a -> f ()
traceFileShowM FilePath
fp = forall (f :: * -> *). Applicative f => FilePath -> FilePath -> f ()
traceFileM FilePath
fp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> FilePath
show
traceFileShowMW :: (Show a, Applicative f) => FilePath -> a -> f ()
traceFileShowMW :: forall a (f :: * -> *).
(Show a, Applicative f) =>
FilePath -> a -> f ()
traceFileShowMW FilePath
fp = forall (f :: * -> *). Applicative f => FilePath -> FilePath -> f ()
traceFileMW FilePath
fp forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> FilePath
show
traceInternal :: (FilePath -> String -> IO ()) -> FilePath -> String -> a -> a
traceInternal :: forall a.
(FilePath -> FilePath -> IO ()) -> FilePath -> FilePath -> a -> a
traceInternal FilePath -> FilePath -> IO ()
writeFunc FilePath
fp FilePath
str a
val = forall a. IO a -> a
unsafePerformIO forall a b. (a -> b) -> a -> b
$! FilePath -> FilePath -> IO ()
writeFunc FilePath
fp (FilePath
str forall a. [a] -> [a] -> [a]
++ FilePath
"\n") forall (f :: * -> *) a b. Functor f => f a -> b -> f b
$> a
val