Re: Re: MyPrependTo
- To: mathgroup at smc.vnet.net
- Subject: [mg16112] Re: [mg15988] Re: MyPrependTo
- From: David Withoff <withoff>
- Date: Thu, 25 Feb 1999 08:25:04 -0500
- Sender: owner-wri-mathgroup at wolfram.com
> > In[2]:= > > push[someStack_, elt_] := (someStack = Prepend[someStack, elt];) > > Is it legal in Mathematica to assign a function parameter? Yes, it is legal to assign values to function arguments. That is how built-in assignment functions work. Assignments are just functions (Set, SetDelayed, etc.) that assign values to their arguments. > I think not, because they are avaluated before going in the > function body (ie, parameters are passed by value, not by > reference or pointers) If the value is to be assigned to the original function argument, rather than to the expression that results after the function argument has been evaluated, then yes it is necessary to do something, such as using Unevaluated, or setting the HoldFirst attribute, to prevent the default normal-order evaluation (evaluating the function arguments before evaluating the function). Evaluation control is separate from the issue of making assignments. These evaluation controls determine whether the assignment will be made to the original function argument, or to the expression that results after the argument has been evaluated. Mathematica allows you to do either one. > The solution is to use a golbal stack parameter, or to use > Return[] > > Push[...] := ( Return[Prepend[...]]); > e = Push[e,1]; Return has no effect in this example, so no, this is not a solution. > BTW: does anyone know how to pass a pointer to an object > so it can be modified and returned? HoldFirst etc. do not > do that. Expressions are pointers. You can use them just like you use pointers in any other programming language. If you have a simple example that illustrates your question, you might try posting it to the group, or sending it to Wolfram Research technical support. > Dan N. Truong, IRISA, Campus de Beaulieu, 35042 Rennes Cedex, FRANCE > tel:(+33)2 99 84 25 39 fax:(+33)2 99 84 25 28 > mailto:dtruong at irisa.fr http://www.irisa.fr/caps/PEOPLE/Dan > gsm:06 14 78 06 95 -> http://www.sfr.fr/html/annexes/sms/sendsms.html Dave Withoff Wolfram Research