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: [mg70937] RE: [mg70907] Context headache
  • From: "David Park" <djmp at earthlink.net>
  • Date: Thu, 2 Nov 2006 06:47:26 -0500 (EST)

Xerxes,

I think that Context would be a poor tool for doing this.

Why not store your different data sets as...

data[1] = ...
data[2] = ...

and then, if you are doing a lot of calculations on each set...

With[{data=data[5]}, calculations using data]

or

With [{n=5}, calculations using data[n]]

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/

From: Xerxes [mailto:Xerxes314 at gmail.com]
To: mathgroup at smc.vnet.net

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/7368d0cd14
aa8960
(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: Publicon
  • Next by Date: Re: Two small problems compute OK, but not their sum.
  • Previous by thread: Re: Context headache
  • Next by thread: Re: RE: Context headache