-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | circular vectors -- -- nonempty circular vector data structure library. indexing always total @package vector-circular @version 0.1 module Data.Vector.Circular -- | A circular, immutable vector. This type is equivalent to -- cycle xs for some finite, nonempty xs, but -- with O(1) access and O(1) rotations. Indexing into this -- type is always total. data CircularVector a CircularVector :: {-# UNPACK #-} !NonEmptyVector a -> {-# UNPACK #-} !Int -> CircularVector a [vector] :: CircularVector a -> {-# UNPACK #-} !NonEmptyVector a [rotation] :: CircularVector a -> {-# UNPACK #-} !Int -- | Construct a singleton 'CircularVector. singleton :: a -> CircularVector a -- | Construct a Vector from a CircularVector. toVector :: CircularVector a -> Vector a -- | Construct a CircularVector from a NonEmptyVector. fromVector :: NonEmptyVector a -> CircularVector a -- | Construct a CircularVector from a Vector. -- -- Calls error if the input vector is empty. unsafeFromVector :: Vector a -> CircularVector a -- | Construct a CircularVector from a list. fromList :: [a] -> Maybe (CircularVector a) -- | Construct a CircularVector from a list with a size hint. fromListN :: Int -> [a] -> Maybe (CircularVector a) -- | Construct a CircularVector from a list. -- -- Calls error if the input list is empty. unsafeFromList :: [a] -> CircularVector a -- | Construct a CircularVector from a list with a size hint. -- -- Calls error if the input list is empty, or if the size -- hint is <= 0. unsafeFromListN :: Int -> [a] -> CircularVector a -- | Construct a CircularVector at compile-time using typed Template -- Haskell. -- -- TODO: show examples vec :: Lift a => [a] -> Q (TExp (CircularVector a)) -- | Rotate the vector to the left by n number of elements. -- -- Note: Left rotations start to break down due to arithmetic -- underflow when the size of the input vector is > -- maxBound Int@ rotateLeft :: Int -> CircularVector a -> CircularVector a -- | Rotate the vector to left by n number of elements. -- -- Note: Right rotations start to break down due to arithmetic -- overflow when the size of the input vector is > -- maxBound Int@ rotateRight :: Int -> CircularVector a -> CircularVector a equivalent :: Ord a => CircularVector a -> CircularVector a -> Bool canonise :: Ord a => CircularVector a -> CircularVector a leastRotation :: forall a. Ord a => Vector a -> Int -- | Lazily-accumulating monoidal fold over a CircularVector. foldMap :: Monoid m => (a -> m) -> CircularVector a -> m -- | Strictly-accumulating monoidal fold over a CircularVector. foldMap' :: Monoid m => (a -> m) -> CircularVector a -> m foldr :: (a -> b -> b) -> b -> CircularVector a -> b foldl :: (b -> a -> b) -> b -> CircularVector a -> b foldr' :: (a -> b -> b) -> b -> CircularVector a -> b foldl' :: (b -> a -> b) -> b -> CircularVector a -> b foldr1 :: (a -> a -> a) -> CircularVector a -> a foldl1 :: (a -> a -> a) -> CircularVector a -> a -- | Lazily-accumulating semigroupoidal fold over a CircularVector. foldMap1 :: Semigroup m => (a -> m) -> CircularVector a -> m -- | Strictly-accumulating semigroupoidal fold over a -- CircularVector. foldMap1' :: Semigroup m => (a -> m) -> CircularVector a -> m toNonEmpty :: CircularVector a -> NonEmpty a -- | Index into a CircularVector. This is always total. index :: CircularVector a -> Int -> a -- | Get the first element of a CircularVector. This is always -- total. head :: CircularVector a -> a -- | Get the last element of a CircularVector. This is always total. last :: CircularVector a -> a instance GHC.Base.Functor Data.Vector.Circular.CircularVector instance GHC.Read.Read a => GHC.Read.Read (Data.Vector.Circular.CircularVector a) instance GHC.Show.Show a => GHC.Show.Show (Data.Vector.Circular.CircularVector a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Vector.Circular.CircularVector a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Vector.Circular.CircularVector a) instance GHC.Base.Semigroup (Data.Vector.Circular.CircularVector a) instance Data.Foldable.Foldable Data.Vector.Circular.CircularVector instance Data.Semigroup.Foldable.Class.Foldable1 Data.Vector.Circular.CircularVector instance Language.Haskell.TH.Syntax.Lift a => Language.Haskell.TH.Syntax.Lift (Data.Vector.Circular.CircularVector a)