 | EdisonCore-1.2.1: A library of efficient, purely-functional data structures (Core Implementations) | Contents | Index |
|
| Data.Edison.Seq.BankersQueue | | Portability | GHC, Hugs (MPTC and FD) | | Stability | stable | | Maintainer | robdockins AT fastmail DOT fm |
|
|
|
|
|
| Description |
This module implements Banker's Queues. It has the standard running
times from Data.Edison.Seq except for the following:
- rcons, size, inBounds O( 1 )
References:
- Chris Okasaki, Purely Functional Data Structures,
1998, sections 6.3.2 and 8.4.1.
- Chris Okasaki, "Simple and efficient purely functional
queues and deques", Journal of Function Programming
5(4):583-592, October 1995.
|
|
| Synopsis |
|
| data Seq a | | | empty :: Seq a | | | singleton :: a -> Seq a | | | lcons :: a -> Seq a -> Seq a | | | rcons :: a -> Seq a -> Seq a | | | append :: Seq a -> Seq a -> Seq a | | | lview :: Monad m => Seq a -> m (a, Seq a) | | | lhead :: Seq a -> a | | | ltail :: Seq a -> Seq a | | | rview :: Monad m => Seq a -> m (a, Seq a) | | | rhead :: Seq a -> a | | | rtail :: Seq a -> Seq a | | | lheadM :: Monad m => Seq a -> m a | | | ltailM :: Monad m => Seq a -> m (Seq a) | | | rheadM :: Monad m => Seq a -> m a | | | rtailM :: Monad m => Seq a -> m (Seq a) | | | null :: Seq a -> Bool | | | size :: Seq a -> Int | | | concat :: Seq (Seq a) -> Seq a | | | reverse :: Seq a -> Seq a | | | reverseOnto :: Seq a -> Seq a -> Seq a | | | fromList :: [a] -> Seq a | | | toList :: Seq a -> [a] | | | map :: (a -> b) -> Seq a -> Seq b | | | concatMap :: (a -> Seq b) -> Seq a -> Seq b | | | fold :: (a -> b -> b) -> b -> Seq a -> b | | | fold' :: (a -> b -> b) -> b -> Seq a -> b | | | fold1 :: (a -> a -> a) -> Seq a -> a | | | fold1' :: (a -> a -> a) -> Seq a -> a | | | foldr :: (a -> b -> b) -> b -> Seq a -> b | | | foldr' :: (a -> b -> b) -> b -> Seq a -> b | | | foldl :: (b -> a -> b) -> b -> Seq a -> b | | | foldl' :: (b -> a -> b) -> b -> Seq a -> b | | | foldr1 :: (a -> a -> a) -> Seq a -> a | | | foldr1' :: (a -> a -> a) -> Seq a -> a | | | foldl1 :: (a -> a -> a) -> Seq a -> a | | | foldl1' :: (a -> a -> a) -> Seq a -> a | | | reducer :: (a -> a -> a) -> a -> Seq a -> a | | | reducer' :: (a -> a -> a) -> a -> Seq a -> a | | | reducel :: (a -> a -> a) -> a -> Seq a -> a | | | reducel' :: (a -> a -> a) -> a -> Seq a -> a | | | reduce1 :: (a -> a -> a) -> Seq a -> a | | | reduce1' :: (a -> a -> a) -> Seq a -> a | | | copy :: Int -> a -> Seq a | | | inBounds :: Int -> Seq a -> Bool | | | lookup :: Int -> Seq a -> a | | | lookupM :: Monad m => Int -> Seq a -> m a | | | lookupWithDefault :: a -> Int -> Seq a -> a | | | update :: Int -> a -> Seq a -> Seq a | | | adjust :: (a -> a) -> Int -> Seq a -> Seq a | | | mapWithIndex :: (Int -> a -> b) -> Seq a -> Seq b | | | foldrWithIndex :: (Int -> a -> b -> b) -> b -> Seq a -> b | | | foldrWithIndex' :: (Int -> a -> b -> b) -> b -> Seq a -> b | | | foldlWithIndex :: (b -> Int -> a -> b) -> b -> Seq a -> b | | | foldlWithIndex' :: (b -> Int -> a -> b) -> b -> Seq a -> b | | | take :: Int -> Seq a -> Seq a | | | drop :: Int -> Seq a -> Seq a | | | splitAt :: Int -> Seq a -> (Seq a, Seq a) | | | subseq :: Int -> Int -> Seq a -> Seq a | | | filter :: (a -> Bool) -> Seq a -> Seq a | | | partition :: (a -> Bool) -> Seq a -> (Seq a, Seq a) | | | takeWhile :: (a -> Bool) -> Seq a -> Seq a | | | dropWhile :: (a -> Bool) -> Seq a -> Seq a | | | splitWhile :: (a -> Bool) -> Seq a -> (Seq a, Seq a) | | | zip :: Seq a -> Seq b -> Seq (a, b) | | | zip3 :: Seq a -> Seq b -> Seq c -> Seq (a, b, c) | | | zipWith :: (a -> b -> c) -> Seq a -> Seq b -> Seq c | | | zipWith3 :: (a -> b -> c -> d) -> Seq a -> Seq b -> Seq c -> Seq d | | | unzip :: Seq (a, b) -> (Seq a, Seq b) | | | unzip3 :: Seq (a, b, c) -> (Seq a, Seq b, Seq c) | | | unzipWith :: (a -> b) -> (a -> c) -> Seq a -> (Seq b, Seq c) | | | unzipWith3 :: (a -> b) -> (a -> c) -> (a -> d) -> Seq a -> (Seq b, Seq c, Seq d) | | | strict :: Seq a -> Seq a | | | strictWith :: (a -> b) -> Seq a -> Seq a | | | structuralInvariant :: Seq a -> Bool | | | moduleName :: String |
|
|
|
| Sequence Type
|
|
| data Seq a |
Instances | |
|
|
| Sequence operations
|
|
| empty :: Seq a |
|
| singleton :: a -> Seq a |
|
| lcons :: a -> Seq a -> Seq a |
|
| rcons :: a -> Seq a -> Seq a |
|
| append :: Seq a -> Seq a -> Seq a |
|
| lview :: Monad m => Seq a -> m (a, Seq a) |
|
| lhead :: Seq a -> a |
|
| ltail :: Seq a -> Seq a |
|
| rview :: Monad m => Seq a -> m (a, Seq a) |
|
| rhead :: Seq a -> a |
|
| rtail :: Seq a -> Seq a |
|
| lheadM :: Monad m => Seq a -> m a |
|
| ltailM :: Monad m => Seq a -> m (Seq a) |
|
| rheadM :: Monad m => Seq a -> m a |
|
| rtailM :: Monad m => Seq a -> m (Seq a) |
|
| null :: Seq a -> Bool |
|
| size :: Seq a -> Int |
|
| concat :: Seq (Seq a) -> Seq a |
|
| reverse :: Seq a -> Seq a |
|
| reverseOnto :: Seq a -> Seq a -> Seq a |
|
| fromList :: [a] -> Seq a |
|
| toList :: Seq a -> [a] |
|
| map :: (a -> b) -> Seq a -> Seq b |
|
| concatMap :: (a -> Seq b) -> Seq a -> Seq b |
|
| fold :: (a -> b -> b) -> b -> Seq a -> b |
|
| fold' :: (a -> b -> b) -> b -> Seq a -> b |
|
| fold1 :: (a -> a -> a) -> Seq a -> a |
|
| fold1' :: (a -> a -> a) -> Seq a -> a |
|
| foldr :: (a -> b -> b) -> b -> Seq a -> b |
|
| foldr' :: (a -> b -> b) -> b -> Seq a -> b |
|
| foldl :: (b -> a -> b) -> b -> Seq a -> b |
|
| foldl' :: (b -> a -> b) -> b -> Seq a -> b |
|
| foldr1 :: (a -> a -> a) -> Seq a -> a |
|
| foldr1' :: (a -> a -> a) -> Seq a -> a |
|
| foldl1 :: (a -> a -> a) -> Seq a -> a |
|
| foldl1' :: (a -> a -> a) -> Seq a -> a |
|
| reducer :: (a -> a -> a) -> a -> Seq a -> a |
|
| reducer' :: (a -> a -> a) -> a -> Seq a -> a |
|
| reducel :: (a -> a -> a) -> a -> Seq a -> a |
|
| reducel' :: (a -> a -> a) -> a -> Seq a -> a |
|
| reduce1 :: (a -> a -> a) -> Seq a -> a |
|
| reduce1' :: (a -> a -> a) -> Seq a -> a |
|
| copy :: Int -> a -> Seq a |
|
| inBounds :: Int -> Seq a -> Bool |
|
| lookup :: Int -> Seq a -> a |
|
| lookupM :: Monad m => Int -> Seq a -> m a |
|
| lookupWithDefault :: a -> Int -> Seq a -> a |
|
| update :: Int -> a -> Seq a -> Seq a |
|
| adjust :: (a -> a) -> Int -> Seq a -> Seq a |
|
| mapWithIndex :: (Int -> a -> b) -> Seq a -> Seq b |
|
| foldrWithIndex :: (Int -> a -> b -> b) -> b -> Seq a -> b |
|
| foldrWithIndex' :: (Int -> a -> b -> b) -> b -> Seq a -> b |
|
| foldlWithIndex :: (b -> Int -> a -> b) -> b -> Seq a -> b |
|
| foldlWithIndex' :: (b -> Int -> a -> b) -> b -> Seq a -> b |
|
| take :: Int -> Seq a -> Seq a |
|
| drop :: Int -> Seq a -> Seq a |
|
| splitAt :: Int -> Seq a -> (Seq a, Seq a) |
|
| subseq :: Int -> Int -> Seq a -> Seq a |
|
| filter :: (a -> Bool) -> Seq a -> Seq a |
|
| partition :: (a -> Bool) -> Seq a -> (Seq a, Seq a) |
|
| takeWhile :: (a -> Bool) -> Seq a -> Seq a |
|
| dropWhile :: (a -> Bool) -> Seq a -> Seq a |
|
| splitWhile :: (a -> Bool) -> Seq a -> (Seq a, Seq a) |
|
| zip :: Seq a -> Seq b -> Seq (a, b) |
|
| zip3 :: Seq a -> Seq b -> Seq c -> Seq (a, b, c) |
|
| zipWith :: (a -> b -> c) -> Seq a -> Seq b -> Seq c |
|
| zipWith3 :: (a -> b -> c -> d) -> Seq a -> Seq b -> Seq c -> Seq d |
|
| unzip :: Seq (a, b) -> (Seq a, Seq b) |
|
| unzip3 :: Seq (a, b, c) -> (Seq a, Seq b, Seq c) |
|
| unzipWith :: (a -> b) -> (a -> c) -> Seq a -> (Seq b, Seq c) |
|
| unzipWith3 :: (a -> b) -> (a -> c) -> (a -> d) -> Seq a -> (Seq b, Seq c, Seq d) |
|
| strict :: Seq a -> Seq a |
|
| strictWith :: (a -> b) -> Seq a -> Seq a |
|
| Unit testing
|
|
| structuralInvariant :: Seq a -> Bool |
|
| Documentation
|
|
| moduleName :: String |
|
| Produced by Haddock version 0.8 |