MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: RV: Re: Displaying the solution step by step in Wolfram Mathematica
  • Next by Date: Re: pass by reference
  • Previous by thread: pass by reference
  • Next by thread: Re: pass by reference