Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2000
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2000

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

Search the Archive

Re: getting module output in replace form

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24665] Re: getting module output in replace form
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Fri, 4 Aug 2000 01:18:53 -0400 (EDT)
  • Organization: Universitaet Leipzig
  • References: <8lsts5$22u@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

you multiply strings "var ->"*OuputForm[var1] and you are wondering
why this is not a replacment rule ?

You should think about the scope of your variable names

CalculateVariables[a_,b_,c_,vars_]:=
  Module[{var1,var2,var3,var4},
    ...
    Thread[vars->{var1,var2,var3,var4}]
   ]

  and

{var1,var2}/. CalculateVariables[a,b,c,{var1,var2,var3,var4}]

will do the job as well as

CalculateVariables[a_,b_,c_]:=
  Block[{v1,v2,v3,v4},
    ...
   {var1->v1,var2->v2,var3->v3,var4->v4}
   ]

If you realy like the useless string construction

 
CalculateVariables[a_, b_, c_] :=
  Module[{var1, var2, var3, var4},
    var1 = a*b^c; var2 = b/c;
    {"var1" -> OutputForm[var1],
        "var2" -> OutputForm[var2],
        "var3" -> OutputForm[var3],
        "var4" -> OutputForm[var4]
} /. Rule[s_String, r_] :> Rule[ToExpression[s], r]
    ]

may also work.

BTW: For what is the OutputForm[] ?

Regards
  Jens

Michael Gilchrist wrote:
> 
> Hi,
> 
> I am trying to create a module that will output a list of replacement
> rules.
> 
> for example
> 
> {var1, var2}/.CalculateVariables[1, 0.3, 1.222]
> 
> where CalculateVariables is the module I am writing.
> 
> i.e.
> 
> CalculateVariables[a_, b_, c_]:=
>         Module[{var1, var2, var3, var4},
> 
>                 var1 = a* b^c;
>                 var2 = b/c;
>                 .
>                 .
>                 .
> 
>                 {"var1 ->" OutputForm[var1],
>                  "var2 ->" OutputForm[var2],
>                  "var3 ->" OutputForm[var3],
>                  "var4 ->" OutputForm[var4]
>                 }
>         ]
> 
> But if I try to use the output as a replacement rule I get
> 
> >ReplaceAll::"reps" {{var1-> 0.234, var2->0.323, var3-> 100001, var4->0}}
> is neither a list of replacement
> rules nor a valid dispatch table, and so cannot be used for replacing."
> 
> I have tried wrapping the "vari ->" in textform, outputform, etc but get
> nowhere.
> 
> I feel like I must be doing something wrong since this seems like it
> should be an easy and common use of a module.  Any help would be
> appreciated.
> 
> Thanks,
> 
> Mike
> 
> Michael Gilchrist
> Dept. of Biology
> Duke University
> Durham, NC 27708


  • Prev by Date: Re: Mathematica in University introductory physics courses
  • Next by Date: Test for On/Off (was: RE: Re: Manipulating Slot objects in Compile)
  • Previous by thread: Re: Mathematica in University introductory physics courses
  • Next by thread: Test for On/Off (was: RE: Re: Manipulating Slot objects in Compile)