*To*: mathgroup@smc.vnet.net*Subject*: [mg10890] Re: [mg10843] Re: [mg10783] How to change the argument of a function?*From*: jpk@max.mpae.gwdg.de*Date*: Thu, 12 Feb 1998 20:15:22 -0500

Hi, all that answer the f[x_]:=2x problem. Did anybody read the manual or the ``Programming in Mathematica'' book by Roman M"ader ? The correct solution is SetAttributes[f,HoldAll] f[x_]:=x=2*x Than You can write x=1; f[x]; x and get the expected Out[]= 2 This answer where posted several times in the news group. Hope that helps Jens > Vilis Nams wrote: > > > > I want to define a function that in the course of doing something, also > > changes the value of its argument, for example: f[x_]:=Module[{}, > > x=2*x; > > x > > ] > > When I run the function, I get the error: "Set::setraw : Cannot assign > > to raw object ...." Can this be done in some way? > > > > -------------------- > > Vilis O. Nams > > Dept of Biology, NSAC > > Box 550, Truro, NS, Canada > > vnams @ nsac.ns.ca > > ------------------- > > > If I have an argument I want to change in the course of a functional > evaluation, I make a "working" copy at the beginning of the function: > > f[x_]:=Module[{y}, > y=x; > > y=2*y; > > y > > ] > > I don't think you can change the value of the actual argument inside a > function, or if you could that it would be a good idea. If you made > global changes inside a local function, it might make for some > interesting bugs that would be very hard to track down. -- > Remove the _nospam_ in the return address to respond. >