module Debug.TraceCall.Base where
import Data.List
data TraceData = TraceData
{ function :: String
, args :: [String]
, context :: Maybe TraceData
}
traceToString :: TraceData -> [String]
traceToString (TraceData f as mc) =
[f ++ " " ++ intercalate " " as] ++ maybe [] traceToString mc
traceResult :: TraceData -> String -> String
traceResult td res =
case traceToString td of
[] -> "Trace error"
[top] -> "Function call: " ++ top ++ " => " ++ res
(top:ctx) -> "Function call: " ++ top ++ " => " ++ res ++ "\n In context: " ++ concatMap ("\n "++) ctx