Re: Help with HoldAll needed
- To: mathgroup at smc.vnet.net
- Subject: [mg100919] Re: Help with HoldAll needed
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Thu, 18 Jun 2009 04:53:17 -0400 (EDT)
- References: <h1aaej$8k1$1@smc.vnet.net>
Erich Neuwirth wrote:
> I define
>
> MyFun[x_]:=Unevaluated[x]
> SetAttributes[MyFun,HoldAllComplete]
>
>
> MyFun[2 = 3]
> still evaluated the argument and of course produces an error
> I would like to get the unevaluated expression to be able
> to separate the first argument.
>
> In fact, I would like MyFun to be a macro which allows me
> to play list processing games with the arguments.
>
> How can this be accomplished?
>
The best solution is to manipulate expressions wrapped in Hold or
HoldForm (which does not show when the expression is printed). For
example (using Hold)
In[13]:= lhs[expr_] := Extract[expr, {1, 1}, Hold];
In[15]:= expr = Hold[(3 + 2) = 2]
Out[15]= Hold[3 + 2 = 2]
In[16]:= lhs[expr]
Out[16]= Hold[3 + 2]
Notice that in my example the lhs is (3+2), and that this has not been
evaluated.
David Bailey
http://www.dbaileyconsultancy.co.uk