What's "going on" is that data structures in Haskell are immutable. Thus, when you call "push" on a stack, you get a new stack with the new element pushed onto it, and the original stack is left un-touched.
On Fri, Feb 5, 2010 at 10:56 AM, michael rice <nowg...@yahoo.com> wrote: > Not using Stack for anything, just trying to understand how things can be > done in Haskell. > > To that end... > > What's going on here? I'm not even calling function POP. > > Michael > > ====================== > > module Data.Stack (Stack, emptyStack, isEmptyStack, push, pop, top) where > > newtype Stack a = Stack [a] > > emptyStack = Stack [] > isEmptyStack (Stack xs) = null xs > push x (Stack xs) = Stack (x:xs) > pop (Stack (_:xs)) = Stack xs > top (Stack (x:_)) = x > > ====================== > > [mich...@localhost ~]$ ghci Stack.hs > GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help > Loading package ghc-prim ... linking ... done. > Loading package integer ... linking ... done. > Loading package base ... linking ... done. > [1 of 1] Compiling Data.Stack ( Stack.hs, interpreted ) > Ok, modules loaded: Data.Stack. > *Data.Stack> let s1 = emptyStack > *Data.Stack> top (push 1 s1) > 1 > *Data.Stack> top (push 2 s1) > 2 > *Data.Stack> top (push 3 s1) > 3 > *Data.Stack> let s2 = pop s1 > *Data.Stack> top s2 > *** Exception: Stack.hs:8:0-28: Non-exhaustive patterns in function pop > > *Data.Stack> > > > > > --- On *Fri, 2/5/10, Casey Hawthorne <cas...@istar.ca>* wrote: > > > From: Casey Hawthorne <cas...@istar.ca> > Subject: Re: [Haskell-cafe] Stack ADT? > To: haskell-cafe@haskell.org > Date: Friday, February 5, 2010, 10:36 AM > > You could also implement stacks with mutable data structures, e.g. > STArray, etc. > > What do you want to use a stack ADT for? > > Usually stacks are discussed for pedagogical purposes but usually > recursion is used if you need a stack like operation. > -- > Regards, > Casey > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org <http://mc/compose?to=haskell-c...@haskell.org> > http://www.haskell.org/mailman/listinfo/haskell-cafe > > > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe