packages feed

dequeue 0.1.5 → 0.1.7

raw patch · 2 files changed

+18/−20 lines, 2 filesdep ~QuickCheckPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: QuickCheck

API changes (from Hackage documentation)

- Data.Dequeue: instance Arbitrary a => Arbitrary (BankersDequeue a)
- Data.Dequeue: instance Dequeue BankersDequeue
- Data.Dequeue: instance Eq a => Eq (BankersDequeue a)
- Data.Dequeue: instance Foldable BankersDequeue
- Data.Dequeue: instance Functor BankersDequeue
- Data.Dequeue: instance Read a => Read (BankersDequeue a)
- Data.Dequeue: instance Show a => Show (BankersDequeue a)
- Data.Dequeue: length :: Dequeue q => q a -> Int
- Data.Dequeue.Show: instance Read a => Read (Dequeue a)
- Data.Dequeue.Show: instance Show a => Show (Dequeue a)
+ Data.Dequeue: instance Data.Dequeue.Dequeue Data.Dequeue.BankersDequeue
+ Data.Dequeue: instance Data.Foldable.Foldable Data.Dequeue.BankersDequeue
+ Data.Dequeue: instance GHC.Base.Functor Data.Dequeue.BankersDequeue
+ Data.Dequeue: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Dequeue.BankersDequeue a)
+ Data.Dequeue: instance GHC.Read.Read a => GHC.Read.Read (Data.Dequeue.BankersDequeue a)
+ Data.Dequeue: instance GHC.Show.Show a => GHC.Show.Show (Data.Dequeue.BankersDequeue a)
+ Data.Dequeue: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Dequeue.BankersDequeue a)
+ Data.Dequeue.Show: instance GHC.Read.Read a => GHC.Read.Read (Data.Dequeue.Show.Dequeue a)
+ Data.Dequeue.Show: instance GHC.Show.Show a => GHC.Show.Show (Data.Dequeue.Show.Dequeue a)
- Data.Dequeue: class Dequeue q
+ Data.Dequeue: class Foldable q => Dequeue q
- Data.Dequeue: popBack :: Dequeue q => q a -> (Maybe a, q a)
+ Data.Dequeue: popBack :: Dequeue q => q a -> Maybe (a, q a)
- Data.Dequeue: popFront :: Dequeue q => q a -> (Maybe a, q a)
+ Data.Dequeue: popFront :: Dequeue q => q a -> Maybe (a, q a)

Files

dequeue.cabal view
@@ -1,7 +1,7 @@ Build-Type: Simple Name: dequeue Category: Data Structures-Version: 0.1.5+Version: 0.1.7 Cabal-Version: >= 1.2 Synopsis: A typeclass and an implementation for double-ended queues. Description:@@ -17,7 +17,7 @@  Library     Exposed-Modules: Data.Dequeue, Data.Dequeue.Show-    Build-Depends: base < 5, safe, QuickCheck+    Build-Depends: base < 5, safe, QuickCheck >= 2     Hs-Source-Dirs: src     GHC-Options: -Wall 
src/Data/Dequeue.hs view
@@ -62,13 +62,11 @@ import qualified Data.Dequeue.Show  -- | A typeclass for double-ended queues.-class Dequeue q where+class Foldable q => Dequeue q where     -- | Generates an empty queue.     empty :: q a     -- | Returns 'True' if this queue is empty.     null :: q a -> Bool-    -- | Returns the number of elements in this queue.-    length :: q a -> Int     -- | Returns the item on the front of the queue.     first :: q a -> Maybe a     -- | Returns the item on the end of the queue.@@ -82,11 +80,11 @@     -- | Pushes an item onto the front of the queue.     pushFront :: q a -> a -> q a     -- | Pops an item from the front of the queue.-    popFront :: q a -> (Maybe a, q a)+    popFront :: q a -> Maybe (a, q a)     -- | Pushes an item onto the back of the queue.     pushBack :: q a -> a -> q a     -- | Pops an item from the back of the queue.-    popBack :: q a -> (Maybe a, q a)+    popBack :: q a -> Maybe (a, q a)     -- | Converts a list into a queue.     fromList :: [a] -> q a @@ -125,15 +123,15 @@ --   you get the same queue. prop_pushpop_front :: (Dequeue q, Eq a, Eq (q a)) => q a -> a -> Bool prop_pushpop_front q a =-    let (a', q') = popFront (pushFront q a) in-    a' == Just a && q' == q+    let Just (a', q') = popFront (pushFront q a) in+    a' == a && q' == q  -- | Validates that if you push, then pop, the back of the queue, --   you get the same queue. prop_pushpop_back :: (Dequeue q, Eq a, Eq (q a)) => q a -> a -> Bool prop_pushpop_back q a =-    let (a', q') = popBack (pushBack q a) in-    a' == Just a && q' == q+    let Just (a', q') = popBack (pushBack q a) in+    a' == a && q' == q  -- | Validates that 'first' returns the last 'pushFront''d element. prop_push_front :: (Dequeue q, Eq a) => q a -> a -> Bool@@ -199,12 +197,12 @@     foldl f a (BankersDequeue _ front _ rear) = foldl f a (front ++ reverse rear)     foldr1 f (BankersDequeue _ front _ rear) = foldr1 f (front ++ reverse rear)     foldl1 f (BankersDequeue _ front _ rear) = foldl1 f (front ++ reverse rear)+    length (BankersDequeue sizeF _ sizeR _) = sizeF + sizeR  instance Dequeue BankersDequeue where     empty = BankersDequeue 0 [] 0 []     null (BankersDequeue 0 [] 0 []) = True     null _ = False-    length (BankersDequeue sizeF _ sizeR _) = sizeF + sizeR     first (BankersDequeue _ [] _ [x]) = Just x     first (BankersDequeue _ front _ _) =  headMay front     last (BankersDequeue _ [x] _ []) = Just x@@ -215,18 +213,18 @@         take i rear ++ take (i - sizeR) (reverse front)     pushFront (BankersDequeue sizeF front sizeR rear) x =         check $ BankersDequeue (sizeF + 1) (x : front) sizeR rear-    popFront (BankersDequeue _ [] _ []) = (Nothing, empty)-    popFront (BankersDequeue _ [] _ [x]) = (Just x, empty)+    popFront (BankersDequeue _ [] _ []) = Nothing+    popFront (BankersDequeue _ [] _ [x]) = Just (x, empty)     popFront (BankersDequeue _ [] _ _) = error "Queue is too far unbalanced."     popFront (BankersDequeue sizeF (f : fs) sizeR rear) =-        (Just f, check $ BankersDequeue (sizeF - 1) fs sizeR rear)+        Just (f, check $ BankersDequeue (sizeF - 1) fs sizeR rear)     pushBack (BankersDequeue sizeF front sizeR rear) x =         check $ BankersDequeue sizeF front (sizeR + 1) (x : rear)-    popBack (BankersDequeue _ [] _ []) = (Nothing, empty)-    popBack (BankersDequeue _ [x] _ []) = (Just x, empty)+    popBack (BankersDequeue _ [] _ []) = Nothing+    popBack (BankersDequeue _ [x] _ []) = Just (x, empty)     popBack (BankersDequeue _ _ _ []) = error "Queue is too far unbalanced."     popBack (BankersDequeue sizeF front sizeR (r : rs)) =-        (Just r, check $ BankersDequeue sizeF front (sizeR - 1) rs)+        Just (r, check $ BankersDequeue sizeF front (sizeR - 1) rs)     fromList list = check $ BankersDequeue (List.length list) list 0 []  -- | The maximum number of times longer one half of a 'BankersDequeue' is@@ -336,7 +334,7 @@ --   pops from the front. prop_pop_front_bq_balance :: BankersDequeue Int -> Int -> Bool prop_pop_front_bq_balance q count =-    let pop _ queue = let (_, queue') = popFront queue in queue'+    let pop _ queue = (fromJustDef queue . liftM snd . popFront) queue         q' = foldr pop q [0 .. count] in     balanced q' @@ -344,7 +342,7 @@ --   pops from the back. prop_pop_back_bq_balance :: BankersDequeue Int -> Int -> Bool prop_pop_back_bq_balance q count =-    let pop _ queue = let (_, queue') = popBack queue in queue'+    let pop _ queue = (fromJustDef queue . liftM snd . popBack) queue         q' = foldr pop q [0 .. count] in     balanced q'