 | EdisonCore-1.2.1.2: A library of efficent, purely-functional data structures (Core Implementations) | Source code | 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
|
|
|
Instances | |
|
|
| Sequence operations
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| fold :: (a -> b -> b) -> b -> Seq a -> b | Source |
|
|
| fold' :: (a -> b -> b) -> b -> Seq a -> b | Source |
|
|
|
|
|
|
| foldr :: (a -> b -> b) -> b -> Seq a -> b | Source |
|
|
| foldr' :: (a -> b -> b) -> b -> Seq a -> b | Source |
|
|
| foldl :: (b -> a -> b) -> b -> Seq a -> b | Source |
|
|
| foldl' :: (b -> a -> b) -> b -> Seq a -> b | Source |
|
|
|
|
|
|
|
|
|
|
| reducer :: (a -> a -> a) -> a -> Seq a -> a | Source |
|
|
| reducer' :: (a -> a -> a) -> a -> Seq a -> a | Source |
|
|
| reducel :: (a -> a -> a) -> a -> Seq a -> a | Source |
|
|
| reducel' :: (a -> a -> a) -> a -> Seq a -> a | Source |
|
|
|
|
| reduce1' :: (a -> a -> a) -> Seq a -> a | Source |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| foldrWithIndex :: (Int -> a -> b -> b) -> b -> Seq a -> b | Source |
|
|
| foldrWithIndex' :: (Int -> a -> b -> b) -> b -> Seq a -> b | Source |
|
|
| foldlWithIndex :: (b -> Int -> a -> b) -> b -> Seq a -> b | Source |
|
|
| foldlWithIndex' :: (b -> Int -> a -> b) -> b -> Seq a -> b | Source |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Unit testing
|
|
|
|
| Documentation
|
|
|
|
| Produced by Haddock version 2.3.0 |