Copyright | (c) Atze van der Ploeg 2014 (c) David Feuer 2021 |
---|---|
License | BSD-style |
Maintainer | David.Feuer@gmail.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
A sequence, a queue, with worst case constant time: |>
, and viewl
.
Based on: "Simple and Efficient Purely Functional Queues and Deques", Chris Okasaki, Journal of Functional Programming 1995
Synopsis
- data Queue a
Documentation
A scheduled banker's queue, as described by Okasaki. In theory, we only need a queue supporting constant amortized time operations. In practice, once a queue gets large, linear-time pauses and cache effects relating to rebuilding start to hurt.
Instances
Foldable Queue Source # | |
Defined in Control.Monad.Logic.Sequence.Internal.ScheduledQueue fold :: Monoid m => Queue m -> m # foldMap :: Monoid m => (a -> m) -> Queue a -> m # foldMap' :: Monoid m => (a -> m) -> Queue a -> m # foldr :: (a -> b -> b) -> b -> Queue a -> b # foldr' :: (a -> b -> b) -> b -> Queue a -> b # foldl :: (b -> a -> b) -> b -> Queue a -> b # foldl' :: (b -> a -> b) -> b -> Queue a -> b # foldr1 :: (a -> a -> a) -> Queue a -> a # foldl1 :: (a -> a -> a) -> Queue a -> a # elem :: Eq a => a -> Queue a -> Bool # maximum :: Ord a => Queue a -> a # minimum :: Ord a => Queue a -> a # | |
Traversable Queue Source # | |
Functor Queue Source # | |
Sequence Queue Source # | |