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.RevSeq

Contents

Description

This module defines a sequence adaptor Rev s. If s is a sequence type constructor, then Rev s is a sequence type constructor that is identical to s, except that it is kept in the opposite order. Also keeps explicit track of the size of the sequence, similar to the Sized adaptor in Data.Edison.Seq.SizedSeq.

This module is most useful when s is a sequence type that offers fast access to the front but slow access to the rear, and your application needs the opposite (i.e., fast access to the rear but slow access to the front).

All time complexities are determined by the underlying sequence, except that the complexities for accessing the left and right sides of the sequence are exchanged, and size becomes O( 1 ).

Synopsis

Rev Sequence Type

data Rev s a Source

Instances

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

Sequence Operations

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

inBounds :: Sequence s => Int -> Rev s a -> BoolSource

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Unit testing

Documentation

Other supported operations

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

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