MathGroup Archive 2007

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

Search the Archive

Re: Two different packages can not Need[] the same utility package?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg79881] Re: Two different packages can not Need[] the same utility package?
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Wed, 8 Aug 2007 04:43:46 -0400 (EDT)
  • Organization: Uni Leipzig
  • References: <f990v1$c32$1@smc.vnet.net>
  • Reply-to: kuska at informatik.uni-leipzig.de

Hi,

you need a shared package for MyDistributionFunction, i.e.

Package 1------------------------------------------------

BeginPackage["myoption`"]
MyDistributionFunction::usage =
   "An option for the usefull function.";
EndPackage[];

End-------------------------------------------------------

Package 2-------------------------------------------------

BeginPackage["ff`", {"myoption`",
   "Statistics`ContinuousDistributions`"}]
func::usage = "A usefull function.";

Begin["`Private`"]
Options[func] = {MyDistributionFunction -> (NormalDistribution[#,
       0.2 #] &)}

func[x_, opts___] :=
  Random[(MyDistributionFunction /. {opts} /. Options[func])[x]]

End[]
EndPackage[]

End----------------------------------------------------------

and

Package 3----------------------------------------------------

BeginPackage["gg`", {"myoption`",
   "Statistics`ContinuousDistributions`"}]
gunc::usage = "An other usefull function."

Begin["`Private`"]
Options[gunc] = {MyDistributionFunction -> (NormalDistribution[#,
        0.2 #] &)};
gunc[x_, opts___] :=
  Random[(MyDistributionFunction /. {opts} /. Options[gunc])[x]]
End[]
EndPackage[]

End----------------------------------------------------------

Regards
   Jens


benedek.kovacs.mr at gmail.com wrote:
> 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: Re: Documentation Center
  • Next by Date: Re: Re: Documentation Center (v6): do-it-yourself Mathematica
  • Previous by thread: Re: Two different packages can not Need[] the same utility package?
  • Next by thread: Progess bar in Mathematica