EdisonCore-1.2.1.3: A library of efficent, purely-functional data structures (Core Implementations)

PortabilityGHC, Hugs (MPTC and FD)
Stabilitystable
Maintainerrobdockins AT fastmail DOT fm

Data.Edison.Seq.SizedSeq

Contents

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

Sized Sequence Type

data Sized s a Source

Instances

Sequence s => Monad (Sized s) 
Sequence s => Functor (Sized s) 
Sequence s => MonadPlus (Sized s) 
Sequence s => Sequence (Sized s) 
Eq (s a) => Eq (Sized s a) 
(Sequence s, Ord a, Eq (s a)) => Ord (Sized s a) 
(Sequence s, Read (s a)) => Read (Sized s a) 
(Sequence s, Show (s a)) => Show (Sized s a) 
(Sequence s, Arbitrary (s a)) => Arbitrary (Sized s a) 
Sequence s => Monoid (Sized s a) 

Sequence Operations

singleton :: Sequence s => a -> Sized s aSource

lcons :: Sequence s => a -> Sized s a -> Sized s aSource

rcons :: Sequence s => a -> Sized s a -> Sized s aSource

append :: Sequence s => Sized s a -> Sized s a -> Sized s aSource

lview :: (Sequence s, Monad m) => Sized s a -> m (a, Sized s a)Source

lhead :: Sequence s => Sized s a -> aSource

ltail :: Sequence s => Sized s a -> Sized s aSource

rview :: (Sequence s, Monad m) => Sized s a -> m (a, Sized s a)Source

rhead :: Sequence s => Sized s a -> aSource

rtail :: Sequence s => Sized s a -> Sized s aSource

lheadM :: (Sequence s, Monad m) => Sized s a -> m aSource

ltailM :: (Sequence s, Monad m) => Sized s a -> m (Sized s a)Source

rheadM :: (Sequence s, Monad m) => Sized s a -> m aSource

rtailM :: (Sequence s, Monad m) => Sized s a -> m (Sized s a)Source

null :: Sequence s => Sized s a -> BoolSource

size :: Sequence s => Sized s a -> IntSource

concat :: Sequence s => Sized s (Sized s a) -> Sized s aSource

reverse :: Sequence s => Sized s a -> Sized s aSource

reverseOnto :: Sequence s => Sized s a -> Sized s a -> Sized s aSource

fromList :: Sequence s => [a] -> Sized s aSource

toList :: Sequence s => Sized s a -> [a]Source

map :: Sequence s => (a -> b) -> Sized s a -> Sized s bSource

concatMap :: Sequence s => (a -> Sized s b) -> Sized s a -> Sized s bSource

fold :: Sequence s => (a -> b -> b) -> b -> Sized s a -> bSource

fold' :: Sequence s => (a -> b -> b) -> b -> Sized s a -> bSource

fold1 :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

fold1' :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

foldr :: Sequence s => (a -> b -> b) -> b -> Sized s a -> bSource

foldr' :: Sequence s => (a -> b -> b) -> b -> Sized s a -> bSource

foldl :: Sequence s => (b -> a -> b) -> b -> Sized s a -> bSource

foldl' :: Sequence s => (b -> a -> b) -> b -> Sized s a -> bSource

foldr1 :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

foldr1' :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

foldl1 :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

foldl1' :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

reducer :: Sequence s => (a -> a -> a) -> a -> Sized s a -> aSource

reducer' :: Sequence s => (a -> a -> a) -> a -> Sized s a -> aSource

reducel :: Sequence s => (a -> a -> a) -> a -> Sized s a -> aSource

reducel' :: Sequence s => (a -> a -> a) -> a -> Sized s a -> aSource

reduce1 :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

reduce1' :: Sequence s => (a -> a -> a) -> Sized s a -> aSource

copy :: Sequence s => Int -> a -> Sized s aSource

lookup :: Sequence s => Int -> Sized s a -> aSource

lookupM :: (Sequence s, Monad m) => Int -> Sized s a -> m aSource

lookupWithDefault :: Sequence s => a -> Int -> Sized s a -> aSource

update :: Sequence s => Int -> a -> Sized s a -> Sized s aSource

adjust :: Sequence s => (a -> a) -> Int -> Sized s a -> Sized s aSource

mapWithIndex :: Sequence s => (Int -> a -> b) -> Sized s a -> Sized s bSource

foldrWithIndex :: Sequence s => (Int -> a -> b -> b) -> b -> Sized s a -> bSource

foldlWithIndex :: Sequence s => (b -> Int -> a -> b) -> b -> Sized s a -> bSource

foldrWithIndex' :: Sequence s => (Int -> a -> b -> b) -> b -> Sized s a -> bSource

foldlWithIndex' :: Sequence s => (b -> Int -> a -> b) -> b -> Sized s a -> bSource

take :: Sequence s => Int -> Sized s a -> Sized s aSource

drop :: Sequence s => Int -> Sized s a -> Sized s aSource

splitAt :: Sequence s => Int -> Sized s a -> (Sized s a, Sized s a)Source

subseq :: Sequence s => Int -> Int -> Sized s a -> Sized s aSource

filter :: Sequence s => (a -> Bool) -> Sized s a -> Sized s aSource

partition :: Sequence s => (a -> Bool) -> Sized s a -> (Sized s a, Sized s a)Source

takeWhile :: Sequence s => (a -> Bool) -> Sized s a -> Sized s aSource

dropWhile :: Sequence s => (a -> Bool) -> Sized s a -> Sized s aSource

splitWhile :: Sequence s => (a -> Bool) -> Sized s a -> (Sized s a, Sized s a)Source

zip :: Sequence s => Sized s a -> Sized s b -> Sized s (a, b)Source

zip3 :: Sequence s => Sized s a -> Sized s b -> Sized s c -> Sized s (a, b, c)Source

zipWith :: Sequence s => (a -> b -> c) -> Sized s a -> Sized s b -> Sized s cSource

zipWith3 :: Sequence s => (a -> b -> c -> d) -> Sized s a -> Sized s b -> Sized s c -> Sized s dSource

unzip :: Sequence s => Sized s (a, b) -> (Sized s a, Sized s b)Source

unzip3 :: Sequence s => Sized s (a, b, c) -> (Sized s a, Sized s b, Sized s c)Source

unzipWith :: Sequence s => (a -> b) -> (a -> c) -> Sized s a -> (Sized s b, Sized s c)Source

unzipWith3 :: Sequence s => (a -> b) -> (a -> c) -> (a -> d) -> Sized s a -> (Sized s b, Sized s c, Sized s d)Source

strict :: Sequence s => Sized s a -> Sized s aSource

strictWith :: Sequence s => (a -> b) -> Sized s a -> Sized s aSource

Unit testing

Documentation

Other supported operations

fromSeq :: Sequence s => s a -> Sized s aSource

toSeq :: Sequence s => Sized s a -> s aSource