packages feed

Stack 0.1.0 → 0.2.0

raw patch · 2 files changed

+32/−13 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Data.Stack: stackPeek :: Stack a -> a
+ Data.Stack: stackPeek :: Stack a -> Maybe a
- Data.Stack: stackPop :: Stack a -> (Stack a, a)
+ Data.Stack: stackPop :: Stack a -> Maybe (Stack a, a)

Files

Stack.cabal view
@@ -1,5 +1,5 @@ name:                Stack-version:             0.1.0+version:             0.2.0 synopsis:            Stack data structure type description:         Please see README.md homepage:            https://en.wikipedia.org/wiki/Stack_(abstract_data_type)
src/Data/Stack.hs view
@@ -1,11 +1,13 @@ -- | Abstract Stack data type+--+-- <https://en.wikipedia.org/wiki/Stack_(abstract_data_type)> module Data.Stack (     Stack,     stackNew,-    stackIsEmpty,     stackPush,     stackPeek,     stackPop,+    stackIsEmpty,     stackSize,   )   where@@ -17,24 +19,41 @@ stackNew :: Stack a stackNew = Stack [] --- | Test if stack is empty-stackIsEmpty :: Stack a -> Bool-stackIsEmpty (Stack []) = True-stackIsEmpty (Stack _)  = False- -- | Push item onto Stack+--+-- > (∀x)(∀s)(stackPop (stackPush s x) == Just (s,x)) stackPush :: Stack a -> a -> Stack a stackPush (Stack items) item = Stack (item : items)  -- | Pop most recently added item without removing from the Stack-stackPeek :: Stack a -> a-stackPeek (Stack items) = head items+--+-- > stackPeek stackNew == Nothing+-- > (∀x)(∀s)(stackPeek (stackPush s x) == Just x)+-- > (∀s)(stackPeek s == fmap snd (stackPop s))+stackPeek :: Stack a -> Maybe a+stackPeek (Stack []) = Nothing+stackPeek (Stack items) = Just (head items) --- | Pop most recently item from Stack-stackPop :: Stack a -> (Stack a, a)-stackPop (Stack items) = (Stack (tail items), stackPeek (Stack items))+-- | Pop most recently added item from Stack+--+-- > stackPop stackNew == Nothing+-- > (∀x)(∀s)(stackPop (stackPush s x) == Just (s,x))+stackPop :: Stack a -> Maybe (Stack a, a)+stackPop (Stack []) = Nothing+stackPop (Stack items) = Just (Stack (tail items), head items) +-- | Test if stack is empty+--+-- > stackIsEmpty stackNew == True+-- > (∀x)(∀s)(stackIsEmpty (stackPush s x) == True)+-- > (∀s)((stackSize s == 0) ⇔ (stackIsEmpty s == True))+stackIsEmpty :: Stack a -> Bool+stackIsEmpty (Stack []) = True+stackIsEmpty (Stack _)  = False+ -- | Compute number of elements contained in the Stack+--+-- > stackSize stackNew == 0+-- > (∀x)(∀s)((stackSize s == n) ⇒ (stackSize (stackPush s x) == n+1)) stackSize :: Stack a -> Int stackSize (Stack items) = length items-