Re: Making a stack.

*To*: mathgroup at smc.vnet.net*Subject*: [mg128481] Re: Making a stack.*From*: Brentt <brenttnewman at gmail.com>*Date*: Wed, 24 Oct 2012 03:31:27 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: l-mathgroup@wolfram.com*Delivered-to*: mathgroup-newout@smc.vnet.net*Delivered-to*: mathgroup-newsend@smc.vnet.net*References*: <20121022060332.6F48D6868@smc.vnet.net>

Thanks guys. I ended up figuring out the issue was with evaluation order and figuring out how use hold first for functions which Set an argument. I found some examples in one of the "applications" sections of the docs implementing just this sort of semantics. I always get tripped up on evaluation order but then it seems obvious once I realize what is going on. I probably should give the advanced sections of the docs a closer read instead of ad hoc use of the function documentation. I've perused those portions of the docs but it tends not to stick until the issues actually come up. On Mon, Oct 22, 2012 at 9:56 PM, Bob Hanlon <hanlonr357 at gmail.com> wrote: > SetAttributes[enqueue, HoldRest] > > enqueue[x_, queue_Symbol] := > If[Head[queue] === List, > AppendTo[queue, x], queue = {x}]; > > enqueue[3, q1] > > {3} > > x = 5; > > enqueue[x, q1] > > {3, 5} > > Or if you want to require manual creation of queue > > enqueue[x_, queue_Symbol] := > AppendTo[queue, x]; > > q2 = {}; > > enqueue[7, q2] > > {7} > > enqueue[x, q2] > > {7, 5} > > > Bob Hanlon > > > On Mon, Oct 22, 2012 at 2:03 AM, Brentt <brenttnewman at gmail.com> wrote: > > > > Hi, I'm trying to make stack functions like enqueue and dequeue to > > demonstrate algorithms. I know enqueue would do pretty much the same > thing > > as AppendTo, but I want the arguments reversed and it to be called > > "enqueue". I figured this would work: > > > > enqueue[x_, queue_] := AppendTo[queue, x]; > > > > But it spits out red. I tried to tinker with the evaluation order but to > no > > avail. Is anyway to make this work? I want the functions to work like > they > > would in a procedural language (I'm not using a procedural language > because > > I want to accompany the algorithms with visualizations---i.e. it's for a > > demonstration project). I know I can just use Set when I want to que > > something, but I was hoping to figure out a way to make the code look > like > > procedural code, and I'm guessing Mathematica is flexible enough to do > > that. > > > > Any ideas? > >

**References**:**Making a stack.***From:*Brentt <brenttnewman@gmail.com>