murray at math.umass.edu (Murray Eisenberg)
[mg6156] conditional package evaluation
writes
> What are good ways to accomplish the following (in Mathematica 3.0)?
> When a package is loaded, a function in it is going to test the
> value of a certain Global` quantity, CheckMe. If the value meets
> the test, then the rest of the package is to be evaluated; other-
> wise it is not.
> The key thing is that I do not want the package's context to be
> created if the test is not met. (Otherwise, the package's Private
> context could contain the function to make the test.)
Murray:
A variant of your method works:
(* this is the package, not the notebook calling it! *)
If[TrueQ[check],
BeginPackage["mypackage"`"];
f :: usage = "Message for exported function f";
Begin["`Private`"];
(* other definitions here *)
f[x_] := "stuff";
End[];
Print["OK -- functions defined."];
EndPackage[];
, (*else*)
Print["check failed"];
]
Note. It is important to have a semicolon at end of each package
expression so that new lines are not interpreted as multiplication
Allan Hayes
hay at haystack.demon.co.uk
http://www.haystack.demon.co.uk