Re: Removing the Context
- To: mathgroup at smc.vnet.net
- Subject: [mg35690] Re: Removing the Context
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Fri, 26 Jul 2002 04:16:32 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <ahoe71$bsp$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi, at first we need a function that strip the context and hinder the creation of private sumbols in the global context Remove[RemoveContextString] RemoveContextString[s_String] := RemoveContext[s] = Module[{lst, p, str}, lst = Characters[s]; p = Position[lst, "`"]; If[p === {}, Return[ToExpression[s]]]; p = Last[p]; str = StringJoin @@ Drop[lst, p[[1]]]; If[MemberQ[Names["System`*"], str], Print[str]; ToExpression[str], str] ] and now PrettyTrace[trexp_]:=trexp /.s_Symbol :> HoldForm @@ {RemoveContextString[ToString[s]]} /. HoldForm[s_Symbol] :> s PrettyTrace[Trace[TreeFind[t, 3]] ] will do what you want. Regards Jens Johannes Ludsteck wrote: > > Dear MathGroup Members, > Tracing functions from Packages generates very long > and confusing output, since long context names are > printed. To give a short example, consider the following > command sequence: > > DiscreteMath`Tree` > > t=MakeTree[Range[5]] > > Trace[TreeFind[t,3]] > > generates very long output. A simple strategy to strip > it would be to use Trace[command, form] which only reports > expressions matching form. > But this does not alleviate the problem that package > variable names are very long, since all package symbols > have a long context. For example > the private package variables 'm' and 'found' are printed as > > DiscreteMath`Tree`Private`m and > DiscreteMath`Tree`Private`found > > This makes Trace output almost unreadable. > > Can anyone suggest a simple idea how to remove the long > context names in Trace output? > > I defined a function which cuts the context from > symbols, but this seems awkward an application of > the function to the output is not trivial. > > Best regards, > Johannes Ludsteck