Re: Odd (to me) Context issue with Packages?
- To: mathgroup at smc.vnet.net
- Subject: [mg115523] Re: Odd (to me) Context issue with Packages?
- From: Jason Ledbetter <jasonbrent at gmail.com>
- Date: Thu, 13 Jan 2011 03:28:44 -0500 (EST)
I received a reply off-line that provided a resolution. In summary, it seems that ToExpression is apparently running outside of the BeginPackage/EndPackage defined Context and as a result the variables I'm trying to reference (from String) via ToExpression are getting set in the Global` context. A potential workaround was: ToExpression["PackageName`Private`"~~variable] vs. just ToExpression@variable In making the suggested change, I was able to get this code (and my first version which is worlds apart from the mess below) to work as I'd expected. I'm not sure if this is a bug in/around ToExpression or not... -jbl On Sun, Jan 9, 2011 at 2:20 AM, Jason Ledbetter <jasonbrent at gmail.com>wrote: > Folk, > > I have two (small, ~20KB and ~17KB) notebooks at the following URIs that > are > working demonstrate my current Mathematica 8 frustrations. > > 1) http://forever.broked.net/~jason/demo_fail2.nb<http://forever.broked.net/%7Ejason/demo_fail2.nb> > > This notebook is the same code from the next example with a package and > exported function wrapper around in. In this example, there are two input > cells that need to be executed in order for the failure to appear. > > After "genInfo2" is executed in the second cell, a simple manipulate > appears and both of the functions Covariance and Correlation fail because > some of the variables are apparently in a different Context than I expect. > e.g., they "cpu" variable that is shown in the output cell from the > Manipulate appears to be in Global` instead of Huh`Private` as I'd expect. > > There *IS* a Huh`Private`cpu variable that gets created here, but > apparently > it isn't what is getting passed through the Manipulate and into the > Covariance and Correlation functions. > > (Execute Remove["Huh`*"] to clean up what this adds to your M environment) > > 2) http://forever.broked.net/~jason/demo_fail.nb<http://forever.broked.net/%7Ejason/demo_fail.nb> > > This is the same code as in demo_fail2.nb, but without the package wrapper > around it. THIS code works exactly as I'm expecting. > > I've been beating my head against #1 for too many hours now. > > Can someone shed some light into what is going on here and how to fix this > apparent context failure? > > Note: If you execute demo_fail.nb before demo_fail2.nb, the failure will > not > occur. This appears to be because demo_fail2.nb's requirements are > satisfied > by variables in Global` context at that point. > > -jbl > >