Re: Variable containing code
- To: mathgroup at smc.vnet.net
- Subject: [mg74971] Re: [mg74937] Variable containing code
- From: Carl Woll <carlw at wolfram.com>
- Date: Fri, 13 Apr 2007 02:02:21 -0400 (EDT)
- References: <200704120847.EAA24473@smc.vnet.net> <461E1AE2.10008@wolfram.com> <461E27E1.1020406@metrohm.ch>
Daniel Huber wrote: > Hallo Carl, > thank's a lot. I knew that there is some magic word around but I was > not able to find it. > However, this only solves half the problem. If I try: > t1:=Print["Hello"]; > Set[ t2, Extract[OwnValues[t1],{1,2},Unevaluated] ]; > t2 does not evaluate the code, the reason is: > Although OwnValues[t1] and OwnValues[t2] return similar results, > Information (??) returns different results, namely: t1:=Print[Hello] > and t2=Unevaluated[Print[Hello]] > It looks like Set did not strip the "Unevaluated". Does Set not behave > like a normal function? Well, presumably you meant to use SetDelayed instead of Set. However, if you replace Set (or SetDelayed) by foo, you get the same behavior: In[6]:= foo[t2, Extract[OwnValues[t1], {1, 2}, Unevaluated]] Out[6]= foo[t2, Unevaluated[Print["Hello"]]] So, no functions strip the Unevaluated. There are many ways to get t2 to have the same Information as t1, here are a couple: OwnValues[t1] /. _HoldPattern->t2 /. RuleDelayed->SetDelayed Function[rhs, t2:=rhs,HoldAll]@@Extract[OwnValues[t1],{1,2},Hold] Carl Woll Wolfram Research > Daniel > > Carl Woll wrote: > >> dh wrote: >> >>> Hello, >>> >>> how can one get at the value of a variable if this value is executable >>> code? E.g. consider variable t1:= Print["Hello"]. How can I set the >>> value of a second variable t2 to the value of t1 without executing >>> the code? >>> >>> Daniel >>> >>> >>> >>> >> Try OwnValues[t1] >> >> Carl Woll >> Wolfram Research >> >> > >
- References:
- Variable containing code
- From: dh <dh@metrohm.ch>
- Variable containing code