Copyright | Copyright (c) 1998-1999 2008 Chris Okasaki |
---|---|
License | MIT; see COPYRIGHT file for terms and conditions |
Maintainer | robdockins AT fastmail DOT fm |
Stability | stable |
Portability | GHC, Hugs (MPTC and FD) |
Safe Haskell | None |
Language | Haskell2010 |
Data.Edison.Seq.SizedSeq
Description
This module defines a sequence adaptor Sized s
.
If s
is a sequence type constructor, then Sized s
is a sequence type constructor that is identical to s
,
except that it also keeps track of the current size of
each sequence.
All time complexities are determined by the underlying
sequence, except that size becomes O( 1 )
.
Synopsis
- data Sized s a
- empty :: Sequence s => Sized s a
- singleton :: Sequence s => a -> Sized s a
- lcons :: Sequence s => a -> Sized s a -> Sized s a
- rcons :: Sequence s => a -> Sized s a -> Sized s a
- append :: Sequence s => Sized s a -> Sized s a -> Sized s a
- lview :: (Sequence s, Monad m) => Sized s a -> m (a, Sized s a)
- lhead :: Sequence s => Sized s a -> a
- ltail :: Sequence s => Sized s a -> Sized s a
- rview :: (Sequence s, Monad m) => Sized s a -> m (a, Sized s a)
- rhead :: Sequence s => Sized s a -> a
- rtail :: Sequence s => Sized s a -> Sized s a
- lheadM :: (Sequence s, Monad m) => Sized s a -> m a
- ltailM :: (Sequence s, Monad m) => Sized s a -> m (Sized s a)
- rheadM :: (Sequence s, Monad m) => Sized s a -> m a
- rtailM :: (Sequence s, Monad m) => Sized s a -> m (Sized s a)
- null :: Sequence s => Sized s a -> Bool
- size :: Sequence s => Sized s a -> Int
- concat :: Sequence s => Sized s (Sized s a) -> Sized s a
- reverse :: Sequence s => Sized s a -> Sized s a
- reverseOnto :: Sequence s => Sized s a -> Sized s a -> Sized s a
- fromList :: Sequence s => [a] -> Sized s a
- toList :: Sequence s => Sized s a -> [a]
- map :: Sequence s => (a -> b) -> Sized s a -> Sized s b
- concatMap :: Sequence s => (a -> Sized s b) -> Sized s a -> Sized s b
- fold :: Sequence s => (a -> b -> b) -> b -> Sized s a -> b
- fold' :: Sequence s => (a -> b -> b) -> b -> Sized s a -> b
- fold1 :: Sequence s => (a -> a -> a) -> Sized s a -> a
- fold1' :: Sequence s => (a -> a -> a) -> Sized s a -> a
- foldr :: Sequence s => (a -> b -> b) -> b -> Sized s a -> b
- foldr' :: Sequence s => (a -> b -> b) -> b -> Sized s a -> b
- foldl :: Sequence s => (b -> a -> b) -> b -> Sized s a -> b
- foldl' :: Sequence s => (b -> a -> b) -> b -> Sized s a -> b
- foldr1 :: Sequence s => (a -> a -> a) -> Sized s a -> a
- foldr1' :: Sequence s => (a -> a -> a) -> Sized s a -> a
- foldl1 :: Sequence s => (a -> a -> a) -> Sized s a -> a
- foldl1' :: Sequence s => (a -> a -> a) -> Sized s a -> a
- reducer :: Sequence s => (a -> a -> a) -> a -> Sized s a -> a
- reducer' :: Sequence s => (a -> a -> a) -> a -> Sized s a -> a
- reducel :: Sequence s => (a -> a -> a) -> a -> Sized s a -> a
- reducel' :: Sequence s => (a -> a -> a) -> a -> Sized s a -> a
- reduce1 :: Sequence s => (a -> a -> a) -> Sized s a -> a
- reduce1' :: Sequence s => (a -> a -> a) -> Sized s a -> a
- copy :: Sequence s => Int -> a -> Sized s a
- inBounds :: Sequence s => Int -> Sized s a -> Bool
- lookup :: Sequence s => Int -> Sized s a -> a
- lookupM :: (Sequence s, Monad m) => Int -> Sized s a -> m a
- lookupWithDefault :: Sequence s => a -> Int -> Sized s a -> a
- update :: Sequence s => Int -> a -> Sized s a -> Sized s a
- adjust :: Sequence s => (a -> a) -> Int -> Sized s a -> Sized s a
- mapWithIndex :: Sequence s => (Int -> a -> b) -> Sized s a -> Sized s b
- foldrWithIndex :: Sequence s => (Int -> a -> b -> b) -> b -> Sized s a -> b
- foldlWithIndex :: Sequence s => (b -> Int -> a -> b) -> b -> Sized s a -> b
- foldrWithIndex' :: Sequence s => (Int -> a -> b -> b) -> b -> Sized s a -> b
- foldlWithIndex' :: Sequence s => (b -> Int -> a -> b) -> b -> Sized s a -> b
- take :: Sequence s => Int -> Sized s a -> Sized s a
- drop :: Sequence s => Int -> Sized s a -> Sized s a
- splitAt :: Sequence s => Int -> Sized s a -> (Sized s a, Sized s a)
- subseq :: Sequence s => Int -> Int -> Sized s a -> Sized s a
- filter :: Sequence s => (a -> Bool) -> Sized s a -> Sized s a
- partition :: Sequence s => (a -> Bool) -> Sized s a -> (Sized s a, Sized s a)
- takeWhile :: Sequence s => (a -> Bool) -> Sized s a -> Sized s a
- dropWhile :: Sequence s => (a -> Bool) -> Sized s a -> Sized s a
- splitWhile :: Sequence s => (a -> Bool) -> Sized s a -> (Sized s a, Sized s a)
- zip :: Sequence s => Sized s a -> Sized s b -> Sized s (a, b)
- zip3 :: Sequence s => Sized s a -> Sized s b -> Sized s c -> Sized s (a, b, c)
- zipWith :: Sequence s => (a -> b -> c) -> Sized s a -> Sized s b -> Sized s c
- zipWith3 :: Sequence s => (a -> b -> c -> d) -> Sized s a -> Sized s b -> Sized s c -> Sized s d
- unzip :: Sequence s => Sized s (a, b) -> (Sized s a, Sized s b)
- unzip3 :: Sequence s => Sized s (a, b, c) -> (Sized s a, Sized s b, Sized s c)
- unzipWith :: Sequence s => (a -> b) -> (a -> c) -> Sized s a -> (Sized s b, Sized s c)
- unzipWith3 :: Sequence s => (a -> b) -> (a -> c) -> (a -> d) -> Sized s a -> (Sized s b, Sized s c, Sized s d)
- strict :: Sequence s => Sized s a -> Sized s a
- strictWith :: Sequence s => (a -> b) -> Sized s a -> Sized s a
- structuralInvariant :: Sequence s => Sized s a -> Bool
- moduleName :: String
- instanceName :: Sequence s => Sized s a -> String
- fromSeq :: Sequence s => s a -> Sized s a
- toSeq :: Sequence s => Sized s a -> s a
Sized Sequence Type
Instances
Sequence s => Monad (Sized s) Source # | |
Sequence s => Functor (Sized s) Source # | |
Sequence s => Applicative (Sized s) Source # | |
Sequence s => Sequence (Sized s) Source # | |
Defined in Data.Edison.Seq.SizedSeq Methods lcons :: a -> Sized s a -> Sized s a Source # rcons :: a -> Sized s a -> Sized s a Source # fromList :: [a] -> Sized s a Source # copy :: Int -> a -> Sized s a Source # lview :: Monad m => Sized s a -> m (a, Sized s a) Source # lhead :: Sized s a -> a Source # lheadM :: Monad m => Sized s a -> m a Source # ltail :: Sized s a -> Sized s a Source # ltailM :: Monad m => Sized s a -> m (Sized s a) Source # rview :: Monad m => Sized s a -> m (a, Sized s a) Source # rhead :: Sized s a -> a Source # rheadM :: Monad m => Sized s a -> m a Source # rtail :: Sized s a -> Sized s a Source # rtailM :: Monad m => Sized s a -> m (Sized s a) Source # null :: Sized s a -> Bool Source # size :: Sized s a -> Int Source # toList :: Sized s a -> [a] Source # concat :: Sized s (Sized s a) -> Sized s a Source # reverse :: Sized s a -> Sized s a Source # reverseOnto :: Sized s a -> Sized s a -> Sized s a Source # fold :: (a -> b -> b) -> b -> Sized s a -> b Source # fold' :: (a -> b -> b) -> b -> Sized s a -> b Source # fold1 :: (a -> a -> a) -> Sized s a -> a Source # fold1' :: (a -> a -> a) -> Sized s a -> a Source # foldr :: (a -> b -> b) -> b -> Sized s a -> b Source # foldr' :: (a -> b -> b) -> b -> Sized s a -> b Source # foldl :: (b -> a -> b) -> b -> Sized s a -> b Source # foldl' :: (b -> a -> b) -> b -> Sized s a -> b Source # foldr1 :: (a -> a -> a) -> Sized s a -> a Source # foldr1' :: (a -> a -> a) -> Sized s a -> a Source # foldl1 :: (a -> a -> a) -> Sized s a -> a Source # foldl1' :: (a -> a -> a) -> Sized s a -> a Source # reducer :: (a -> a -> a) -> a -> Sized s a -> a Source # reducer' :: (a -> a -> a) -> a -> Sized s a -> a Source # reducel :: (a -> a -> a) -> a -> Sized s a -> a Source # reducel' :: (a -> a -> a) -> a -> Sized s a -> a Source # reduce1 :: (a -> a -> a) -> Sized s a -> a Source # reduce1' :: (a -> a -> a) -> Sized s a -> a Source # take :: Int -> Sized s a -> Sized s a Source # drop :: Int -> Sized s a -> Sized s a Source # splitAt :: Int -> Sized s a -> (Sized s a, Sized s a) Source # subseq :: Int -> Int -> Sized s a -> Sized s a Source # filter :: (a -> Bool) -> Sized s a -> Sized s a Source # partition :: (a -> Bool) -> Sized s a -> (Sized s a, Sized s a) Source # takeWhile :: (a -> Bool) -> Sized s a -> Sized s a Source # dropWhile :: (a -> Bool) -> Sized s a -> Sized s a Source # splitWhile :: (a -> Bool) -> Sized s a -> (Sized s a, Sized s a) Source # inBounds :: Int -> Sized s a -> Bool Source # lookup :: Int -> Sized s a -> a Source # lookupM :: Monad m => Int -> Sized s a -> m a Source # lookupWithDefault :: a -> Int -> Sized s a -> a Source # update :: Int -> a -> Sized s a -> Sized s a Source # adjust :: (a -> a) -> Int -> Sized s a -> Sized s a Source # mapWithIndex :: (Int -> a -> b) -> Sized s a -> Sized s b Source # foldrWithIndex :: (Int -> a -> b -> b) -> b -> Sized s a -> b Source # foldrWithIndex' :: (Int -> a -> b -> b) -> b -> Sized s a -> b Source # foldlWithIndex :: (b -> Int -> a -> b) -> b -> Sized s a -> b Source # foldlWithIndex' :: (b -> Int -> a -> b) -> b -> Sized s a -> b Source # zip :: Sized s a -> Sized s b -> Sized s (a, b) Source # zip3 :: Sized s a -> Sized s b -> Sized s c -> Sized s (a, b, c) Source # zipWith :: (a -> b -> c) -> Sized s a -> Sized s b -> Sized s c Source # zipWith3 :: (a -> b -> c -> d) -> Sized s a -> Sized s b -> Sized s c -> Sized s d Source # unzip :: Sized s (a, b) -> (Sized s a, Sized s b) Source # unzip3 :: Sized s (a, b, c) -> (Sized s a, Sized s b, Sized s c) Source # unzipWith :: (a -> b) -> (a -> c) -> Sized s a -> (Sized s b, Sized s c) Source # unzipWith3 :: (a -> b) -> (a -> c) -> (a -> d) -> Sized s a -> (Sized s b, Sized s c, Sized s d) Source # strict :: Sized s a -> Sized s a Source # strictWith :: (a -> b) -> Sized s a -> Sized s a Source # structuralInvariant :: Sized s a -> Bool Source # instanceName :: Sized s a -> String Source # | |
Sequence s => Alternative (Sized s) Source # | |
Sequence s => MonadPlus (Sized s) Source # | |
Eq (s a) => Eq (Sized s a) Source # | |
(Sequence s, Ord a, Eq (s a)) => Ord (Sized s a) Source # | |
Defined in Data.Edison.Seq.SizedSeq | |
(Sequence s, Read (s a)) => Read (Sized s a) Source # | |
Defined in Data.Edison.Seq.SizedSeq | |
(Sequence s, Show (s a)) => Show (Sized s a) Source # | |
Sequence s => Semigroup (Sized s a) Source # | |
Sequence s => Monoid (Sized s a) Source # | |
(Sequence s, Arbitrary (s a)) => Arbitrary (Sized s a) Source # | |
(Sequence s, CoArbitrary (s a)) => CoArbitrary (Sized s a) Source # | |
Defined in Data.Edison.Seq.SizedSeq Methods coarbitrary :: Sized s a -> Gen b -> Gen b |
Sequence Operations
lookupWithDefault :: Sequence s => a -> Int -> Sized s a -> a Source #
foldrWithIndex :: Sequence s => (Int -> a -> b -> b) -> b -> Sized s a -> b Source #
foldlWithIndex :: Sequence s => (b -> Int -> a -> b) -> b -> Sized s a -> b Source #
foldrWithIndex' :: Sequence s => (Int -> a -> b -> b) -> b -> Sized s a -> b Source #
foldlWithIndex' :: Sequence s => (b -> Int -> a -> b) -> b -> Sized s a -> b Source #
zipWith3 :: Sequence s => (a -> b -> c -> d) -> Sized s a -> Sized s b -> Sized s c -> Sized s d Source #
unzipWith3 :: Sequence s => (a -> b) -> (a -> c) -> (a -> d) -> Sized s a -> (Sized s b, Sized s c, Sized s d) Source #
Unit testing
structuralInvariant :: Sequence s => Sized s a -> Bool Source #
Documentation
moduleName :: String Source #
instanceName :: Sequence s => Sized s a -> String Source #