Call-by-reference from inside a function

*To*: mathgroup at smc.vnet.net*Subject*: [mg72568] Call-by-reference from inside a function*From*: "zac" <replicatorzed at gmail.com>*Date*: Tue, 9 Jan 2007 07:49:30 -0500 (EST)

Dear Group, I'm in need of a function, which is called with one argument, a list. The function is to chose one element of the list randomly, AND modify the original list by removing the chosen element from it. My problem is that I cannot modify the global variable from inside the function. It is not a solution to return with a list such as: Return[{chosen_element, modified_local_list}], and than make an assignment outside the function. I'm thinking on some call-by-reference method, but as I've learned so far, there is no user-friendly way to do this, just some workarounds (which I don't know). Any suggestions? Istvan example code below: RandomChoseElem[list_List] := Module[ {pos, elem}, pos = Random[Integer, {1, Length[list]}]; elem = list[[pos]]; (* This is to be solved inside : *) (* global`list = Drop[global`list, {pos}]; *) Return[elem] ]; set = {1, 2, 3, 4}; RandomChoseElem[set]

**Follow-Ups**:**Re: Call-by-reference from inside a function***From:*Daniel Lichtblau <danl@wolfram.com>

**Re: Call-by-reference from inside a function***From:*Andrzej Kozlowski <akoz@mimuw.edu.pl>

**Re: Call-by-reference from inside a function***From:*Carl Woll <carlw@wolfram.com>

**Re: Call-by-reference from inside a function***From:*János <janos.lobb@yale.edu>