Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: Making a stack.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128465] Re: Making a stack.
  • From: Fred Simons <f.h.simons at tue.nl>
  • Date: Tue, 23 Oct 2012 00:53:57 -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>

The function AppendTo has attribute HoldFirst; you want to pass the name 
queue into the body and not the value. Therefore your function enqueue 
must have attribute HoldRest:

In[3]:= Attributes[enqueue] = {HoldRest};
enqueue[x_,queue_]:=AppendTo[queue,x];

In[5]:= queue={1,2,3}; enqueue[4, queue]
Out[6]= {1,2,3,4}

Kind regards,

Fred Simons
Eindhoven University of Technology

Op 22-10-2012 8:03, Brentt schreef:
> 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?
>




  • Prev by Date: Making a stack.
  • Next by Date: Re: Separating functions
  • Previous by thread: Making a stack.
  • Next by thread: Re: Making a stack.