Re: Package function variable hiding.
- To: mathgroup at smc.vnet.net
- Subject: [mg38521] Re: [mg38503] Package function variable hiding.
- From: Omega Consulting <info at omegaconsultinggroup.com>
- Date: Fri, 20 Dec 2002 23:40:36 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
At 03:27 AM 12/20/2002, Nigel King wrote: >In the following minimised package func does not do what I want. I want >'test' to "see" NoncentralChiSquareDistribution. Instead it creates a >'Private' version. What am I doing wrong? > >In[1]:= BeginPackage["test`", "Statistics`ContinuousDistributions`"]; In[ >2]:= Needs["Statistics`ContinuousDistributions`"]; In[3]:= func::usage : >= "func[k] a useful function" In[4]:= Begin["`Private`"]; In[5]:= >\!\(\( >func[mask_?NumericQ] := > 10 Log[10, > Quantile[ > >NoncentralChiSquareDistribution[2, > 2\ 10\^\((\((30 - mask)\)/ >20)\)], 0.0001]];\)\) In[6]:= End[]; In[7]:= EndPackage[]; In[8]:= func[ >10] Out[8]= >\!\(\(\(1\/Log[10]\)\((10\ Log[ > >test`Private`Quantile[NoncentralChiSquareDistribution[2, 20], > >0.0001`]])\)\)\) In[9]:= Context[NoncentralChiSquareDistribution] Out[9] >= >"Statistics`ContinuousDistributions`" > >TIA >--- >Nigel King This is an age-old context issue. When you declare auxiliary contexts through BeginPackage it does 2 things: 1) Load the package for that context. In this case, that package also loads secondary packages. 2) Add the context to the $ContextPath. This makes any symbol in that context available within your package. It does not add the contexts of the secondary packages. If you need to use symbols from these packages, their context must be added to BeginPackage. So, given: In[1]:=Needs["Statistics`ContinuousDistributions`"] In[2]:=Context[NoncentralChiSquareDistribution] Out[2]=Statistics`ContinuousDistributions` In[3]:=Context[Quantile] Out[3]=Statistics`DescriptiveStatistics` Your package should start with BeginPackage["test`", {"Statistics`ContinuousDistributions`", "Statistics`DescriptiveStatistics`"}] -------------------------------------------------------------- Omega Consulting "The final answer to your Mathematica needs" http://omegaconsultinggroup.com