|
type Stack a = [a]
|
|
|
|
create :: Stack a
|
|
create = []
|
|
|
|
push :: a -> Stack a -> Stack a
|
|
push = (:)
|
|
|
|
pop :: Stack a -> (a, Stack a)
|
|
pop [] = error "Stack empty"
|
|
pop (x:xs) = (x,xs)
|
|
|
|
empty :: Stack a -> Bool
|
|
empty = null
|
|
|
|
peek :: Stack a -> a
|
|
peek [] = error "Stack empty"
|
|
peek (x:_) = x
|