module Debug.TraceCall.Base where import Data.List -- | * Data collected during inspecting function calls 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