Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

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

Search the Archive

Re: Context headache

  • To: mathgroup at smc.vnet.net
  • Subject: [mg70932] Re: Context headache
  • From: dh <dh at metrohm.ch>
  • Date: Thu, 2 Nov 2006 06:47:07 -0500 (EST)
  • References: <ei9p0d$22s$1@smc.vnet.net>

Hi Xerxes,

a function that iterates over contexts can be made by specifying the 

fully qualified symbol names. Here is an example. First we set up 2 

symbols in 2 different contexts:

Begin["test1`"];

t1=1;

End[];

Begin["test2`"];

t1=2;

End[];

now we use a function that prints variables in these contexts:

(   Print[Symbol[#<>"t1"]];

  )& /@{"test1`","test2`"}



Daniel



Xerxes wrote:

> Hi all,

> 

> I'm trying to write a Mathematica analysis package in which

> various data sets are distinguished by being placed in their

> own contexts, say data1`data, data2`data, etc. This is helpful

> in that you can always hop into a context to work with each

> data set individually. Of course, at some point, that method

> becomes too much of a chore and you want to automate things.

> I'm trying to make a function that iterates over several contexts;

> it will hop into the context, execute a function on the data in

> that context, save the result as another variable in that context

> and then hop back out.

> 

> But as described in

> http://groups.google.com/group/comp.soft-sys.math.mathematica/msg/7368d0cd14aa8960

> (thread aptly named "Nailing jelly to a tree"), you can't do this.

> As soon as you try evaluating the iterating function, all the

> variables inside it get poisoned with the Global` context. You

> might try fixing this by using more nails on the jelly, say

> a hideous construct like

> 

> Evaluate[Symbol[$Context<>"result"]] =

>   analyze[Evaluate[Symbol[$Context<>"data"]]];

> 

> but since my actual functions are much more complicated than

> this simple example, any readability of the code goes right away.

> 

> Is there any better workaround known that would allow

> iteration over multiple contexts?

> 

> Or alternatively, since it seems like I'm trying to force contexts

> to do something they don't want to do, is there some better

> data encapsulation technique I haven't thought of yet?

> 

> Thanks,

> Xerxes

> 



  • Prev by Date: Re: Two small problems compute OK, but not their sum.
  • Next by Date: RE: Adding a key binding for a Style
  • Previous by thread: Re: RE: Context headache
  • Next by thread: Re: Matching with a "Flat" function