Re: Loading packages within packages
- To: mathgroup at smc.vnet.net
- Subject: [mg30276] Re: Loading packages within packages
- From: "Oliver Friedrich" <oli.fri at gmx.de>
- Date: Sat, 4 Aug 2001 20:02:05 -0400 (EDT)
- References: <9kdbv0$f4u$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hallo again, thanks for your help, my second question (how to write and save a package?) seems to be answered. But there is still my problem with the unevaluated ExternalFunction A. My abstract MyPackage package doesn't seem to reflect the error that I made, because none of you experts did find anything. So I give a real example (and that is almost the thing my packet should do, even the names). BeginPackage["TzmSignalTheory`",{"Statistics`NormalDistribution`"}] DiscreteGaussExcitement::usage:= "blabla" Begin["`Private`"] DiscreteGaussExcitement[f_,width_,var_:w]:= PDF[NormalDistribution[f,width],var]] End[] EndPackage[] So, that's my pain in the neck. If I call this package in application.nb I get In[1]= <<TzmSignalTheory` In[2]= DiscreteGaussExcitement[a,b,c] Out[2]= TzmSignalTheory`Private`PDF[NormalDistribution[a,b],c] Why doesn't it find the definitions for PDF and NormalDistribution ? They sure are in this package Statistics`NormalDistribution`, cause it works when I load that package in application.nb and work directly with PDF and Norm... My second thought was: OK, can't work if PDF appears in TzmSignalTheory`context(whatever the reason, it does at all) so my second approach was BeginPackage["TzmSignalTheory`",{"Statistics`NormalDistribution`"}] DiscreteGaussExcitement::usage:= "blabla" Begin["`Private`"] DiscreteGaussExcitement[f_,width_,var_:w]:= Statistics`NormalDistribution`PDF[Statistics`NormalDistribution`NormalDistri bution[f,width],var]] End[] EndPackage[] When I load this package (after quit the kernel and reload, I'm really carefully with that topic), the following happens: In[1]= <<TzmSignalTheory` PDF::"shdw": "Symbol \!\(\"PDF\"\) appears in multiple contexts \ \!\({\"Statistics`NormalDistribution`\", \(\"St\" \\[Ellipsis] \"on`\"\)}\); \ definitions in context \!\(\"Statistics`NormalDistribution`\"\) may shadow or \ be shadowed by other definitions." In[2]= DiscreteGaussExcitement[a,b,c] Out[2]= PDF[NormalDistribution[a,b],c] First that warning after loading the package, but the line Out[2] looks nicer to me, but still it is unevaluated, Mathematica can't find that bleeding definitions. But if I load the Statistics`NormalDistribution`into my application.nb... DiscreteGaussExcitement[a,b,c] \!\(E\^\(-\(\((\(-a\) + c)\)\^2\/\(2\ b\^2\)\)\)\/\(b\ \@\(2\ \[Pi]\)\)\) Now it comes along with the correct answer. Loading my Statistics into application.nb could be a workaround, but that's an awful solution. By the way: Thanks for the advice with that AutogeneratedPackage option. But to me it wasn't easy to find. It isn't documented in the online help, is it? Oliver