MathGroup Archive 2007

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

Search the Archive

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
>>
>>
>
>



  • Prev by Date: Re: Re: Optimal variable selection in multiple linear regression ?
  • Next by Date: Re: Clean-up code for packages
  • Previous by thread: Re: Variable containing code
  • Next by thread: RE: Variable containing code