Two different packages can not Need[] the same utility package?
- To: mathgroup at smc.vnet.net
- Subject: [mg79867] Two different packages can not Need[] the same utility package?
- From: "benedek.kovacs.mr at gmail.com" <benedek.kovacs.mr at gmail.com>
- Date: Tue, 7 Aug 2007 01:32:56 -0400 (EDT)
Hi Here is a problem a I face with: I define two packages. Both needs the same Statistics`ContinuousDistibutions` package. However, the second one can not use it. Why? And how to resolve this problem? To make it more exact, in the following example I will define two packages: ff and gg with the corresponding f and g functions both using NormalDistribution. The first one evaluated works while the second does not. the problem is even more disappointing if we Get[] one packege twice and then are unable to use the function. More complicated verisions can appear using the Sytem` functions or using built-in packages where we does not even know what other packages are invited. Does anyone have a solution for this problem? Kind Regards Bence In[1]:=BeginPackage["ff`"] Out[1]=ff` In[2]:=Unprotect[f] Out[2]={} In[3]:=Begin["`Private`"] Out[3]=ff`Private` In[4]:=Needs["Statistics`ContinuousDistributions`"] In[5]:=Options[f]:={MyDistributionFunction\[Rule](NormalDistribution[#, 0.2 #]&)} f[x_,opts___]:=Random[(MyDistributionFunction/.{opts}/.Options[f])[x]] In[7]:=End[] Out[7]=ff`Private` In[8]:=Protect[f] Out[8]={f} In[9]:=EndPackage[] In[10]:=f[3] Out[10]=2.16487 In[11]:=ff`f[3] Out[11]=4.16217 In[12]:=BeginPackage["gg`"] Out[12]=gg` In[13]:=Unprotect[g] Out[13]={} In[14]:=Begin["`Private`"] Out[14]=gg`Private` In[15]:=Needs["Statistics`ContinuousDistributions`"] In[16]:=Options[g]:={MyDistributionFunction\[Rule] (NormalDistribution[#,0.2 #]&)} g[x_,opts___]:=Random[(MyDistributionFunction/.{opts}/.Options[f])[x]] In[18]:=End[] Out[18]=gg`Private` In[19]:=Protect[g] Out[19]={g} In[20]:=EndPackage[] In[21]:=f[3] Out[21]=2.88763 In[22]:=ff`f[3] Out[22]=3.09767 In[23]:=g[3] >From In[23]:=\!\(\* RowBox[{\(Random::"randt"\), \(\(:\)\(\ \)\), "\<\"Type specification \\!\\( gg`Private`MyDistributionFunction[3]\\) in \ \\!\\(Random[\\(\\(gg`Private`MyDistributionFunction[3]\\)\\)]\\) should be \ Real, Integer, or Complex. \\!\\(\\*ButtonBox[\\\"More...\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"Random::randt\\\"]\\)\"\>"}]\) Out[23]=Random[gg`Private`MyDistributionFunction[3]] In[24]:=gg`g[3] >From In[24]:=\!\(\* RowBox[{\(Random::"randt"\), \(\(:\)\(\ \)\), "\<\"Type specification \\!\\( gg`Private`MyDistributionFunction[3]\\) in \ \\!\\(Random[\\(\\(gg`Private`MyDistributionFunction[3]\\)\\)]\\) should be \ Real, Integer, or Complex. \\!\\(\\*ButtonBox[\\\"More...\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"Random::randt\\\"]\\)\"\>"}]\) Out[24]=Random[gg`Private`MyDistributionFunction[3]]
- Follow-Ups:
- Re: Two different packages can not Need[] the same utility
- From: Carl Woll <carlw@wolfram.com>
- Re: Two different packages can not Need[] the same utility
- From: Adam Berry <adamb@wolfram.com>
- RE: Two different packages can not Need[] the same
- From: "David Annetts" <davidannetts@aapt.net.au>
- Re: Two different packages can not Need[] the same utility