
data Stack a = EmptyStk | Stk a (Stack a)
I find it amusing that the book defined a type that is exactly isomorphic to
the standard list (EmptyStk === [] and Stk === (:)). I guess it's just for
clarity?
On Thu, Feb 4, 2010 at 12:29 PM, Casey Hawthorne
On Thu, 4 Feb 2010 09:07:28 -0800 (PST), you wrote:
Can't find a Stack datatype on Hoogle? Where should I look?
Michael
From "Algorithms: a functional programming approach" Second edition Fethi Rabhi Guy Lapalme
data Stack a = EmptyStk | Stk a (Stack a)
push x s = Stk x s
pop EmptyStk = error "pop from an empty stack" pop (Stk _ s) = s
top EmptyStk = error "top from an empty stack" top (Stk x _) = x
emptyStack = EmptyStk
stackEmpty EmptyStk = True stackEmpty _ = False
newtype Stack a = Stk [a]
push x (Stk xs) = Stk (x:xs)
pop (Stk []) = error "pop from an empty stack" pop (Stk (_:xs)) = Stk xs
top (Stk []) = error "top from an empty stack" top (Stk (x:_)) = x
emptyStack = Stk []
stackEmpty (Stk []) = True stackEmpty (Stk _ ) = False
-- Regards, Casey _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe