module Maptrace(maptrace,ctrace) where
import Debug.Trace(trace)
import CmdLineEnv(argFlag)

maptrace :: String -> [b] -> [b]
maptrace String
s = forall a b. (a -> b) -> [a] -> [b]
map (\b
x -> if b
x forall a. Eq a => a -> a -> Bool
== b
x then forall a. String -> a -> a
trace String
s b
x else forall a. HasCallStack => String -> a
error String
"?")

ctrace :: String -> a -> a -> a
ctrace String
flag =
       if String -> Bool -> Bool
argFlag String
flag Bool
False
       then \a
e -> forall a. String -> a -> a
trace (String
flagforall a. [a] -> [a] -> [a]
++String
": "forall a. [a] -> [a] -> [a]
++forall a. Show a => a -> String
show a
e)
       else forall a b. a -> b -> a
const forall a. a -> a
id