MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Retrieving pasteable function definition without contexts preprended

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123866] [mg123866] Retrieving pasteable function definition without contexts preprended
  • From: Szabolcs Horvát <szhorvat at gmail.com>
  • Date: Sun, 25 Dec 2011 06:34:31 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

Dear MathGroup,

I'm essentially asking the same question that E. Martin-Serrano has 
asked this February (message quoted at the end):

http://forums.wolfram.com/mathgroup/archive/2011/Feb/msg00515.html

What is the best way to print the definition of a package symbols 
without contexts, so it's more readable?

To his question (what is a substitute to Developer`ContextFreeForm), we 
can use Block[{$ContextPath = Append[$ContextPath = 
"contextIdontWantPrinted`", FullDefinition[symbol]]

This method still has a problem though.  The definition that's printed 
cannot be copied directly because quotation marks are missing.  I would 
like to copy it to Workbench for formatting.

Take for example the definition of RunThrough which contains 
WriteString[tmpfile, "\n"].  The "\n" part won't show at all.

Are there any other solutions?  Do you have any other suggestion about 
making it easy to read the code of already defined function (when we 
don't have access to the source file)?

Note: I also asked about this here 
<http://stackoverflow.com/questions/8607813> and got an alternative 
answer to pasting to Workbench for formatting.


> Hi,
>
>
>
> On 2003, I sent to MathGroup the question whose answer is in the link below.
>
>
>
> http://forums.wolfram.com/mathgroup/archive/2003/Jun/msg00146.html
>
>
>
> The idea was to remove the description of the context of local variables in
> packages (the syntactical sugar, I said in that post), as to make clearer
> the definitions inside the private context of packages, which really makes
> obscure these definitions.
>
>
>
> With the answer given in the link to me question, I wrote a trivial function
> which made the trick as follows,
>
>
>
> FullSymbolInfo[s_Symbol]:=Module[{d=FullDefinition[s]//Developer`ContextFree
> Form},If[d==Null,Print["Symbol '"<>ToString[s]<>"' not defined"],d]]
>
>
>
> The idea was *Developer`ContextFreeForm* applied to the (full) definition of
> the symbols in the private context, but now without the
> Developer`ContextFreeForm* facility available, the function does not work
> any more (I think it worked up to the version 6).
>
>
>
> I have unsuccessfully tried to find a substitution for it, (for the
> *Developer`ContextFreeForm* command) might someone in the group come up with
> an alternative? The function *FullSymbolInfo[s_Symbol]* used to be very
> useful.
>
>
>
> Cheers.
>
>
>
> E. Martin-Serrano



-- 
Szabolcs Horvát
Mma QA site proposal: http://area51.stackexchange.com/proposals/37304



  • Prev by Date: Re: Reference of the formulas
  • Next by Date: Connecting Arduino to Mathematica 8 in Mac OS X using SerialIO Package
  • Previous by thread: Retrieving pasteable function definition without contexts preprended
  • Next by thread: Re: Retrieving pasteable function definition without contexts preprended