Re: How to use HoldForm within Module
- To: mathgroup at smc.vnet.net
- Subject: [mg15276] Re: How to use HoldForm within Module
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Thu, 31 Dec 1998 04:39:31 -0500
- References: <76cijv$o48@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Chee Lim Cheung wrote in message <76cijv$o48 at smc.vnet.net>... >Hello Mathematica gurus, > >I am new to Mathematica. I need to use a function in its original form >within Module. > >e.g.,doNOTCHANGE[f_]:=Module[{g},g=HoldForm[f];Print[g]] > >may not give what I want as f is already rearranged according to >Mathematica's lexicographical order within Module,i.e.,HoldForm[f] in >Module may not be exactly of the same form as f as defined. One example >is f=-1(UnitStep[t-1]-UnitStep[t-2]).Can any of you out there show me >the way to get f in its original form inside Module? > >Thanks >Chee > Chee, In your code, the function f is evaluated before being passed to the right side. This can be prevented by giving doNOTCHANGE the attribute HoldAll: Attributes[doNOTCHANGE] = HoldAll; In[1]:= doNOTCHANGE[f_] := Module[{g}, g = HoldForm[f]; Print[g]] In[2]:= doNOTCHANGE[1(UnitStep[t - 1] - UnitStep[t - 2])] 1 (UnitStep[t - 1] - UnitStep[t - 2]) If you don't need the Module then Attributes[doNOTCHANGE2] = HoldAll; In[3]:= doNOTCHANGE2[f_] := Print[HoldForm[f]] In[4]:= doNOTCHANGE2[1(UnitStep[t - 1] - UnitStep[t - 2])] 1 (UnitStep[t - 1] - UnitStep[t - 2]) Allan --------------------- Allan Hayes Mathematica Training and Consulting www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565