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 |

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 )`

.

- data Rev s a
- empty :: Sequence s => Rev s a
- singleton :: Sequence s => a -> Rev s a
- lcons :: Sequence s => a -> Rev s a -> Rev s a
- rcons :: Sequence s => a -> Rev s a -> Rev s a
- append :: Sequence s => Rev s a -> Rev s a -> Rev s a
- lview :: (Sequence s, Monad m) => Rev s a -> m (a, Rev s a)
- lhead :: Sequence s => Rev s a -> a
- ltail :: Sequence s => Rev s a -> Rev s a
- rview :: (Sequence s, Monad m) => Rev s a -> m (a, Rev s a)
- rhead :: Sequence s => Rev s a -> a
- rtail :: Sequence s => Rev s a -> Rev s a
- lheadM :: (Sequence s, Monad m) => Rev s a -> m a
- ltailM :: (Sequence s, Monad m) => Rev s a -> m (Rev s a)
- rheadM :: (Sequence s, Monad m) => Rev s a -> m a
- rtailM :: (Sequence s, Monad m) => Rev s a -> m (Rev s a)
- null :: Sequence s => Rev s a -> Bool
- size :: Sequence s => Rev s a -> Int
- concat :: Sequence s => Rev s (Rev s a) -> Rev s a
- reverse :: Sequence s => Rev s a -> Rev s a
- reverseOnto :: Sequence s => Rev s a -> Rev s a -> Rev s a
- fromList :: Sequence s => [a] -> Rev s a
- toList :: Sequence s => Rev s a -> [a]
- map :: Sequence s => (a -> b) -> Rev s a -> Rev s b
- concatMap :: Sequence s => (a -> Rev s b) -> Rev s a -> Rev s b
- fold :: Sequence s => (a -> b -> b) -> b -> Rev s a -> b
- fold' :: Sequence s => (a -> b -> b) -> b -> Rev s a -> b
- fold1 :: Sequence s => (a -> a -> a) -> Rev s a -> a
- fold1' :: Sequence s => (a -> a -> a) -> Rev s a -> a
- foldr :: Sequence s => (a -> b -> b) -> b -> Rev s a -> b
- foldr' :: Sequence s => (a -> b -> b) -> b -> Rev s a -> b
- foldl :: Sequence s => (b -> a -> b) -> b -> Rev s a -> b
- foldl' :: Sequence s => (b -> a -> b) -> b -> Rev s a -> b
- foldr1 :: Sequence s => (a -> a -> a) -> Rev s a -> a
- foldr1' :: Sequence s => (a -> a -> a) -> Rev s a -> a
- foldl1 :: Sequence s => (a -> a -> a) -> Rev s a -> a
- foldl1' :: Sequence s => (a -> a -> a) -> Rev s a -> a
- reducer :: Sequence s => (a -> a -> a) -> a -> Rev s a -> a
- reducer' :: Sequence s => (a -> a -> a) -> a -> Rev s a -> a
- reducel :: Sequence s => (a -> a -> a) -> a -> Rev s a -> a
- reducel' :: Sequence s => (a -> a -> a) -> a -> Rev s a -> a
- reduce1 :: Sequence s => (a -> a -> a) -> Rev s a -> a
- reduce1' :: Sequence s => (a -> a -> a) -> Rev s a -> a
- copy :: Sequence s => Int -> a -> Rev s a
- inBounds :: Sequence s => Int -> Rev s a -> Bool
- lookup :: Sequence s => Int -> Rev s a -> a
- lookupM :: (Sequence s, Monad m) => Int -> Rev s a -> m a
- lookupWithDefault :: Sequence s => a -> Int -> Rev s a -> a
- update :: Sequence s => Int -> a -> Rev s a -> Rev s a
- adjust :: Sequence s => (a -> a) -> Int -> Rev s a -> Rev s a
- mapWithIndex :: Sequence s => (Int -> a -> b) -> Rev s a -> Rev s b
- foldrWithIndex :: Sequence s => (Int -> a -> b -> b) -> b -> Rev s a -> b
- foldrWithIndex' :: Sequence s => (Int -> a -> b -> b) -> b -> Rev s a -> b
- foldlWithIndex :: Sequence s => (b -> Int -> a -> b) -> b -> Rev s a -> b
- foldlWithIndex' :: Sequence s => (b -> Int -> a -> b) -> b -> Rev s a -> b
- take :: Sequence s => Int -> Rev s a -> Rev s a
- drop :: Sequence s => Int -> Rev s a -> Rev s a
- splitAt :: Sequence s => Int -> Rev s a -> (Rev s a, Rev s a)
- subseq :: Sequence s => Int -> Int -> Rev s a -> Rev s a
- filter :: Sequence s => (a -> Bool) -> Rev s a -> Rev s a
- partition :: Sequence s => (a -> Bool) -> Rev s a -> (Rev s a, Rev s a)
- takeWhile :: Sequence s => (a -> Bool) -> Rev s a -> Rev s a
- dropWhile :: Sequence s => (a -> Bool) -> Rev s a -> Rev s a
- splitWhile :: Sequence s => (a -> Bool) -> Rev s a -> (Rev s a, Rev s a)
- zip :: Sequence s => Rev s a -> Rev s b -> Rev s (a, b)
- zip3 :: Sequence s => Rev s a -> Rev s b -> Rev s c -> Rev s (a, b, c)
- zipWith :: Sequence s => (a -> b -> c) -> Rev s a -> Rev s b -> Rev s c
- zipWith3 :: Sequence s => (a -> b -> c -> d) -> Rev s a -> Rev s b -> Rev s c -> Rev s d
- unzip :: Sequence s => Rev s (a, b) -> (Rev s a, Rev s b)
- unzip3 :: Sequence s => Rev s (a, b, c) -> (Rev s a, Rev s b, Rev s c)
- unzipWith :: Sequence s => (a -> b) -> (a -> c) -> Rev s a -> (Rev s b, Rev s c)
- unzipWith3 :: Sequence s => (a -> b) -> (a -> c) -> (a -> d) -> Rev s a -> (Rev s b, Rev s c, Rev s d)
- strict :: Sequence s => Rev s a -> Rev s a
- strictWith :: Sequence s => (a -> b) -> Rev s a -> Rev s a
- structuralInvariant :: Sequence s => Rev s a -> Bool
- moduleName :: String
- instanceName :: Sequence s => Rev s a -> String
- fromSeq :: Sequence s => s a -> Rev s a
- toSeq :: Sequence s => Rev s a -> s a

# Rev Sequence Type

Sequence s => Monad (Rev s) Source # | |

Sequence s => Functor (Rev s) Source # | |

Sequence s => Applicative (Rev s) Source # | |

Sequence s => Sequence (Rev s) Source # | |

Sequence s => Alternative (Rev s) Source # | |

Sequence s => MonadPlus (Rev s) Source # | |

Eq (s a) => Eq (Rev s a) Source # | |

(Sequence s, Ord a, Eq (s a)) => Ord (Rev s a) Source # | |

(Sequence s, Read (s a)) => Read (Rev s a) Source # | |

(Sequence s, Show (s a)) => Show (Rev s a) Source # | |

Sequence s => Semigroup (Rev s a) Source # | |

Sequence s => Monoid (Rev s a) Source # | |

(Sequence s, Arbitrary (s a)) => Arbitrary (Rev s a) Source # | |

(Sequence s, CoArbitrary (s a)) => CoArbitrary (Rev s a) Source # | |

# Sequence Operations

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

# Unit testing

# Documentation

moduleName :: String Source #