MathGroup Archive 2007

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

Search the Archive

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]]



  • Prev by Date: Re: Re: Documentation Center (v6): do-it-yourself Mathematica Book
  • Next by Date: Re: Documentation Center (v6): do-it-yourself Mathematica
  • Previous by thread: web Mathematica installation problem
  • Next by thread: RE: Two different packages can not Need[] the same