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

maptrace :: String -> [b] -> [b]
maptrace String
s = (b -> b) -> [b] -> [b]
forall a b. (a -> b) -> [a] -> [b]
map (\b
x -> if b
x b -> b -> Bool
forall a. Eq a => a -> a -> Bool
== b
x then String -> b -> b
forall a. String -> a -> a
trace String
s b
x else String -> b
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 -> String -> a -> a
forall a. String -> a -> a
trace (String
flagString -> String -> String
forall a. [a] -> [a] -> [a]
++String
": "String -> String -> String
forall a. [a] -> [a] -> [a]
++a -> String
forall a. Show a => a -> String
show a
e)
       else (a -> a) -> a -> a -> a
forall a b. a -> b -> a
const a -> a
forall a. a -> a
id