queuelike 1.0.8 → 1.0.9
raw patch · 2 files changed
+6/−6 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.MQueue.Chan: instance (MonadIO m) => MQueue (Chan a) m
- Data.Queue.Class: instance (Eq f) => Eq (e :-> f)
- Data.Queue.Class: instance (Ord f) => Ord (e :-> f)
- Data.Queue.PQueue: instance (Ord e) => IQueue (PQueue e)
- Data.Queue.PQueue: instance (Ord e) => Monoid (PQueue e)
- Data.Queue.PQueue: instance (Ord e) => Semigroup (Tree e)
- Data.Queue.PQueue: instance (Show e) => Show (PQueue e)
- Data.Queue.TrieQueue: instance (Ord e) => IQueue (TrieQueue e)
- Data.Queue.TrieQueue: instance (Ord e) => Monoid (TrieQueue e)
- Data.Queue.TrieQueue: instance (Ord e) => Semigroup (Trie e)
- Data.Queue.TrieQueue: instance (Show e) => Show (Trie e)
- Data.Queue.TrieQueue: instance (Show e) => Show (TrieQueue e)
+ Data.MQueue.Chan: instance MonadIO m => MQueue (Chan a) m
+ Data.Queue.Class: instance Eq f => Eq (e :-> f)
+ Data.Queue.Class: instance Ord f => Ord (e :-> f)
+ Data.Queue.PQueue: instance Ord e => IQueue (PQueue e)
+ Data.Queue.PQueue: instance Ord e => Monoid (PQueue e)
+ Data.Queue.PQueue: instance Ord e => Semigroup (Tree e)
+ Data.Queue.PQueue: instance Show e => Show (PQueue e)
+ Data.Queue.TrieQueue: instance Ord e => IQueue (TrieQueue e)
+ Data.Queue.TrieQueue: instance Ord e => Monoid (TrieQueue e)
+ Data.Queue.TrieQueue: instance Ord e => Semigroup (Trie e)
+ Data.Queue.TrieQueue: instance Show e => Show (Trie e)
+ Data.Queue.TrieQueue: instance Show e => Show (TrieQueue e)
- Data.MQueue.Class: class (Monad m) => MQueue q m where { type family MQueueKey q :: *; { isEmpty = liftM isNothing . peek pop_ q = pop q >> return () pop q = peek q >>= maybe (return Nothing) (\ key -> pop_ q >> return (Just key)) pushAll = mapM_ . push } }
+ Data.MQueue.Class: class Monad m => MQueue q m where { type family MQueueKey q :: *; { pushAll = mapM_ . push pop q = peek q >>= maybe (return Nothing) (\ key -> pop_ q >> return (Just key)) pop_ q = pop q >> return () isEmpty = liftM isNothing . peek } }
- Data.MQueue.Class: isEmpty :: (MQueue q m) => q -> m Bool
+ Data.MQueue.Class: isEmpty :: MQueue q m => q -> m Bool
- Data.MQueue.Class: newQueue :: (MQueue q m) => m q
+ Data.MQueue.Class: newQueue :: MQueue q m => m q
- Data.MQueue.Class: peek :: (MQueue q m) => q -> m (Maybe (MQueueKey q))
+ Data.MQueue.Class: peek :: MQueue q m => q -> m (Maybe (MQueueKey q))
- Data.MQueue.Class: pop :: (MQueue q m) => q -> m (Maybe (MQueueKey q))
+ Data.MQueue.Class: pop :: MQueue q m => q -> m (Maybe (MQueueKey q))
- Data.MQueue.Class: pop_ :: (MQueue q m) => q -> m ()
+ Data.MQueue.Class: pop_ :: MQueue q m => q -> m ()
- Data.MQueue.Class: push :: (MQueue q m) => q -> MQueueKey q -> m ()
+ Data.MQueue.Class: push :: MQueue q m => q -> MQueueKey q -> m ()
- Data.MQueue.Class: pushAll :: (MQueue q m) => q -> [MQueueKey q] -> m ()
+ Data.MQueue.Class: pushAll :: MQueue q m => q -> [MQueueKey q] -> m ()
- Data.Queue.Class: class IQueue q where { type family QueueKey q; { mergeAll = foldr merge empty q1 merge q2 = insertAll (toList q2) q1 toList_ = toList toList = unfoldr extract null = isNothing . top size = length . toList_ fromList xs = insertAll xs empty singleton x = insert x empty empty = fromList [] delete = liftM snd . extract top = liftM fst . extract extract = liftM2 (liftM2 (,)) top delete insertAll = flip (foldr insert) insert x q = q `merge` singleton x } }
+ Data.Queue.Class: class IQueue q where { type family QueueKey q; { insert x q = q `merge` singleton x insertAll = flip (foldr insert) extract = liftM2 (liftM2 (,)) top delete top = liftM fst . extract delete = liftM snd . extract empty = fromList [] singleton x = insert x empty fromList xs = insertAll xs empty size = length . toList_ null = isNothing . top toList = unfoldr extract toList_ = toList q1 merge q2 = insertAll (toList q2) q1 mergeAll = foldr merge empty } }
- Data.Queue.Class: delete :: (IQueue q) => q -> Maybe q
+ Data.Queue.Class: delete :: IQueue q => q -> Maybe q
- Data.Queue.Class: empty :: (IQueue q) => q
+ Data.Queue.Class: empty :: IQueue q => q
- Data.Queue.Class: extract :: (IQueue q) => q -> Maybe (QueueKey q, q)
+ Data.Queue.Class: extract :: IQueue q => q -> Maybe (QueueKey q, q)
- Data.Queue.Class: fromList :: (IQueue q) => [QueueKey q] -> q
+ Data.Queue.Class: fromList :: IQueue q => [QueueKey q] -> q
- Data.Queue.Class: insert :: (IQueue q) => QueueKey q -> q -> q
+ Data.Queue.Class: insert :: IQueue q => QueueKey q -> q -> q
- Data.Queue.Class: insertAll :: (IQueue q) => [QueueKey q] -> q -> q
+ Data.Queue.Class: insertAll :: IQueue q => [QueueKey q] -> q -> q
- Data.Queue.Class: merge :: (IQueue q) => q -> q -> q
+ Data.Queue.Class: merge :: IQueue q => q -> q -> q
- Data.Queue.Class: mergeAll :: (IQueue q) => [q] -> q
+ Data.Queue.Class: mergeAll :: IQueue q => [q] -> q
- Data.Queue.Class: null :: (IQueue q) => q -> Bool
+ Data.Queue.Class: null :: IQueue q => q -> Bool
- Data.Queue.Class: singleton :: (IQueue q) => QueueKey q -> q
+ Data.Queue.Class: singleton :: IQueue q => QueueKey q -> q
- Data.Queue.Class: size :: (IQueue q) => q -> Int
+ Data.Queue.Class: size :: IQueue q => q -> Int
- Data.Queue.Class: toList :: (IQueue q) => q -> [QueueKey q]
+ Data.Queue.Class: toList :: IQueue q => q -> [QueueKey q]
- Data.Queue.Class: toList_ :: (IQueue q) => q -> [QueueKey q]
+ Data.Queue.Class: toList_ :: IQueue q => q -> [QueueKey q]
- Data.Queue.Class: top :: (IQueue q) => q -> Maybe (QueueKey q)
+ Data.Queue.Class: top :: IQueue q => q -> Maybe (QueueKey q)
- Data.Queue.PQueue: drawQueue :: (Show e) => PQueue e -> String
+ Data.Queue.PQueue: drawQueue :: Show e => PQueue e -> String
Files
- Data/Queue/TrieQueue/TrieLabel.hs +4/−4
- queuelike.cabal +2/−2
Data/Queue/TrieQueue/TrieLabel.hs view
@@ -6,10 +6,10 @@ import qualified Data.Sequence as Seq import qualified Data.Foldable as Fold -type Split e x = Label e -- ^ common prefix- -> e -> Label e -- ^ truncated suffix of xs- -> e -> Label e -- ^ truncated suffix of xs- -> x -- ^ split trie+type Split e x = Label e -- common prefix+ -> e -> Label e -- truncated suffix of xs+ -> e -> Label e -- truncated suffix of xs+ -> x -- split trie type Tail e x = e -> Label e -- left over suffix -> x -- trie
queuelike.cabal view
@@ -1,5 +1,5 @@ name: queuelike-version: 1.0.8+version: 1.0.9 synopsis: A library of queuelike data structures, both functional and stateful. description: Contains several implementations of data structures implementing a /single-in, single-out/ paradigm. Intended to be a better, more useful replacement for pqueue-mtl. In particular, includes an experimental and possibly genuinely new trie-based priority queue on strings. Feedback is appreciated.@@ -26,7 +26,7 @@ Data.MQueue.SyncQueue Data.MQueue.Chan Data.MQueue-other-modules: +other-modules: Data.Semigroup Data.Queue.QueueHelpers -- Data.Queue.TrieQueue.Edge