Re: pass by reference

*To*: mathgroup at smc.vnet.net*Subject*: [mg93733] Re: [mg93685] pass by reference*From*: Sseziwa Mukasa <mukasa at jeol.com>*Date*: Mon, 24 Nov 2008 04:14:16 -0500 (EST)*References*: <200811221109.GAA20379@smc.vnet.net>

On Nov 22, 2008, at 6:09 AM, juan flores wrote: > Dear all, > > How do you pass by reference in Mathematica? You can't > > Let us say we want to program push and pop. > -------- > Push[el_, stack_] := Prepend[stack, el] > Pop[stack_] := {First[stack], Rest[stack]} > > stack = {1, 2, 3}; newel = 5; > > stack = Push[newel, stack] > {5, 1, 2, 3} > > {lastel, stack} = Pop[stack] > {5, {1, 2, 3}} > > stack > {1, 2, 3} > -------- > > Code is working, but it is kind of awkward to have to use pure > functional programming. What do Push and Pop add for clarity's sake given the existence of First, Rest etc.? Programming in an imperative style using functional constructs will always be awkward since you can't change the value of arguments to a function. > Any pointers/ideas will be greatly appreciated. Without more information about your problem it's hard to give much advice, but generally if you want to write a state machine functionally it's best expressed as functions that accept the current state, preferably contained in a single variable, and return the next state rather than modifying multiple variables. Hope that helps, Sseziwa Mukasa

**References**:**pass by reference***From:*juan flores <juanfie@gmail.com>