Re: how to avoid this evaluation?
- To: mathgroup at smc.vnet.net
- Subject: [mg37337] Re: how to avoid this evaluation?
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 24 Oct 2002 02:55:25 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <ap5g9b$4l1$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi, a=x^2 is *not* a function, it is a value. The value of a symbol is stored in OwnValue[someSymbol] For a you will get {HoldPattern[a] :> x^2} and you have to work with this form and not with an assigment a=x^2, i.e. SetAttributes[OwnValueString, HoldAll] OwnValueString[from_Symbol] := Module[{own, st}, own = OwnValues[Unevaluated[from]] ; st = ToString[Unevaluated[from]]; StringReplace[ ToString[own /. HoldPattern[from] :> st /. Verbatim[HoldPattern][any_] :> any, InputForm], {":>" -> "=", "\"" -> ""}] ] will return the string "{a=x^2}" Regards Jens elcofres wrote: > > Hi, > > I'm trying to write a function similar to Save, but can't find how to > stop the main loop from evaluating the argument. Let's say I have the > definition > > a=x^2 > > if I do > > Save[filename,a] > > the definition goes into the file, what I want is to get the > definition into a variable inside my function, so I can do: > > MyFunction[a] > > and within MyFunction some variable gets assigned with a=x^2 (and not > just with x^2). Is there a way of doing this? I don't like having to > write MyFunction["a"]. In some way Save seems to know how to tell the > system not to replace 'a' with its value. > > TIA > Elcofres