[Date Index]
[Thread Index]
[Author Index]
Re: Hold[], Evaluate[] and so forth.
*To*: mathgroup at yoda.physics.unc.edu
*Subject*: Re: Hold[], Evaluate[] and so forth.
*From*: bert at netcom.com (Roberto Sierra)
*Date*: Wed, 13 Oct 93 11:53:04 -0700
<<
Dear MathGroup, I'm currently in a confused state regarding
the use of Hold[], Evaluate[] etc. Is there a good discussion
of this somewhere (apart from "Mma Book" which is a bit vague).
>>
I've only seen the explanation that appears in the MMA book.
However, by following a lot of the questions and answers that
are posed on the Mathgroup, sci.math.symbolic, and by looking
at various packages to see how Hold[], Unevaluated[], etc., are
used, you can gain quite a bit of insight.
<<
Specifically, I have the following problem: suppose I have a
string containing an expression. I want to get a exact copy
of that as an expression, without any evaluation. I can do:
ToHeldExpression[string]
but this puts a Hold[...] around the result. I can't see any
way of removing the Hold[] without the thing inside getting
evaluated.
>>
That's exactly what Hold[] does -- it *prevents* the inside
from being evaluated. If you remove the Hold[], then the inside
gets crunched. How else would you leave something unevaluated?
<<
On a more general level, is there a way to do an Evaluate[]
to some specified level of an expression, rather than
recursing all the way down?
>>
Perhaps the following session will give you some ideas...
(* The held expression *)
expr = ToHeldExpression["2+2+2*2*(2a+2b)+2+2"]
Hold[2 + 2 + 2 2 (2 a + 2 b) + 2 + 2]
(* Only hold expressions at level #3 -- see Map, MapAll, etc. *)
expr1 = ReleaseHold[Map[Hold,expr,{3}]]
2
8 + Hold[2] Hold[2 a + 2 b]
(* Only leave multiplications held *)
expr2 = ReleaseHold[
expr /. Times -> (Hold[Times[##]] &)
]
8 + Hold[2 2 (Hold[2 a] + Hold[2 b])]
Hope this helps...
\\|// "Television is a medium -- it is
- - neither rare nor well done."
o o -- Ernie Kovacs
J roberto sierra
O tempered microdesigns NOTICE:
\_/ san francisco, ca The ideas and opinions expressed
bert at netcom.com herein are not those of the author.
Prev by Date:
**automatic coefficient / summand extraction**
Next by Date:
**Student version of Mathematica?**
Previous by thread:
**Re: Hold[], Evaluate[] and so forth.**
Next by thread:
**Re: Hold[], Evaluate[] and so forth.**
| |