Re: Context Problem

*To*: mathgroup at smc.vnet.net*Subject*: [mg109443] Re: Context Problem*From*: Rui <rui.rojo at gmail.com>*Date*: Tue, 27 Apr 2010 07:40:55 -0400 (EDT)*References*: <hr3k5q$c44$1@smc.vnet.net>

On Apr 26, 5:51 am, "David Park" <djmp... at comcast.net> wrote: > I would like to export rules from a package in such a way that the pattern > symbols did not include any contexts and in which I also did not have to > export the symbols used in the pattern. In addition, If possible, I would > like this to work even if the package was loaded from a notebook that had > something other than the Global` context. > > Here is a sample package and exported rule: > > BeginPackage["PackageContext`"]; > > Rule1::usage = "Rule1 is a test exported rule."; > > Begin["`Private`"]; > > Rule1 = Cos[x_]^2 + Sin[x_]^2 -> 1; > > End[]; > > EndPackage[]; > > Then, if we evaluate Rule1 we obtain a very clumsy version of the rule, > although I suppose it will work. > > Rule1 > > Cos[PackageContext`Private`x_]^2 + Sin[PackageContext`Private`x_]^2 -> 1 > > What I would like is the rule as written in the package. Is there a way to > do this? > > David Park > > djmp... at comcast.net > > <http://home.comcast.net/~djmpark>http://home.comcast.net/~djmpark/ I'd try something like: BeginPackage["PackageContext`"]; Rule1::usage = "Rule1 is a test exported rule."; Begin["`Private`"]; Rule1 := (Cos[x_]^2 + Sin[x_]^2 -> 1)/.x->Unique["x"]; End[]; EndPackage[]; so you get something like Rule1 Cos[x1_]^2 + Sin[x1_]^2 -> 1 cause the symbol is created only when the Rule1 is evaluated