Re: Postponing loading of Package

*To*: mathgroup at smc.vnet.net*Subject*: [mg36673] Re: Postponing loading of Package*From*: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>*Date*: Wed, 18 Sep 2002 02:10:10 -0400 (EDT)*Organization*: Universitaet Leipzig*References*: <alubet$no8$1@smc.vnet.net>*Reply-to*: kuska at informatik.uni-leipzig.de*Sender*: owner-wri-mathgroup at wolfram.com

Hi, BeginPackage[ "OtherPackage`" ] BigVariable::usage="example" Begin["`Private`"] BigVariable=Table[x y,{x,1000},{y,1000}] End[ ] EndPackage[ ] Print["Loading ..."]; and BeginPackage[ "ThisPackage`" ] function::usage="example" Begin["`Private`"] function[x_]:=Module[{y}, y=If[x>1000, Needs["OtherPackage`"]; OtherPackage`BigVariable[[x]], x] ] End[ ] EndPackage[ ] should do that. Regards Jens ng wrote: > > I wrote a package (call it "ThisPackage`") that uses > DeclarePackage["OtherPackage`", {"BigVariable"} ]. The idea was to prevent > the loading of a large file in routine cases. However, when ThisPackage` > defines its functions, inside the Private` area, it includes a conditional > call to BigVariable. It turns out that OtherPackage is loaded when that > function is defined. I was wondering if there is a way to avoid this. > Roughly speaking, here is the setting: > > BeginPackage[ "OtherPackage`" ] > BigVariable::usage="example > Begin[Private`] > BigVariable=Table[x y,{x,1000},{y,1000}] > End[ ] > EndPackage[ ] > > BeginPackage[ "ThisPackage`" ] > function::usage="example > Begin[Private`] > function[x_]:=Module[{y}, > y=If[x>1000,BigVariable[[x]],x] ] > End[ ] > EndPackage[ ] > > I don't want OtherPakage to be loaded unless function[x] is called with > x>1000 but it loads when function is defined. Any ideas? > > Thanks! > > Nicholas