Unevaluated Expression
- To: mathgroup at smc.vnet.net
- Subject: [mg26962] Unevaluated Expression
- From: "Hermann Meier" <hmeier at webshuttle.ch>
- Date: Tue, 30 Jan 2001 03:38:15 -0500 (EST)
- Organization: EUnet AG, Switzerland. A KPNQwest Company.
- Sender: owner-wri-mathgroup at wolfram.com
Dear Mathematica users,
a = 10;
Unprotect[ToString]; SetAttributes[ToString, HoldAll]
ToString[a]//FullForm
gives (as desired) "a", not 10
Then I wanted to prevent the argument in f[x_] := x^2 from
getting evaluated.
Attributes[f] = {HoldAll}
f[x_] := x^2
f[Unevaluated[a]]
gives 100.
The longwinded code
ToExpression[ToString[f[a]], InputForm, Hold] /. Hold[f[nr_]] -> nr
or
First[Level[Composition[Hold][f[#]],{-1}]]& /@ {a,10}
at least manages to give 10 instead of 100.
Is there really no way to prevent the argument in f[x] from firing ?
(I use Mathematica 4.1 for Windows).
With best regards
Hermann Meier