Copyright | (c) 2018 Andrew Lelechenko |
---|---|
License | MIT |
Maintainer | Andrew Lelechenko <andrew.lelechenko@gmail.com> |
Safe Haskell | None |
Language | Haskell2010 |
Semilazy, infinite stream with O(1) indexing.
Synopsis
- data Chimera a
- index :: Unbox a => Chimera a -> Word -> a
- toList :: Unbox a => Chimera a -> [a]
- tabulate :: Unbox a => (Word -> a) -> Chimera a
- tabulateFix :: Unbox a => ((Word -> a) -> Word -> a) -> Chimera a
- tabulateM :: forall m a. (Monad m, Unbox a) => (Word -> m a) -> m (Chimera a)
- tabulateFixM :: forall m a. (Monad m, Unbox a) => ((Word -> m a) -> Word -> m a) -> m (Chimera a)
- mapWithKey :: (Unbox a, Unbox b) => (Word -> a -> b) -> Chimera a -> Chimera b
- traverseWithKey :: forall m a b. (Monad m, Unbox a, Unbox b) => (Word -> a -> m b) -> Chimera a -> m (Chimera b)
- zipWithKey :: (Unbox a, Unbox b, Unbox c) => (Word -> a -> b -> c) -> Chimera a -> Chimera b -> Chimera c
- zipWithKeyM :: forall m a b c. (Monad m, Unbox a, Unbox b, Unbox c) => (Word -> a -> b -> m c) -> Chimera a -> Chimera b -> m (Chimera c)
Documentation
Construction
tabulateFix :: Unbox a => ((Word -> a) -> Word -> a) -> Chimera a Source #
Create a stream from the unfixed function.
tabulateM :: forall m a. (Monad m, Unbox a) => (Word -> m a) -> m (Chimera a) Source #
Create a stream from the monadic function.
tabulateFixM :: forall m a. (Monad m, Unbox a) => ((Word -> m a) -> Word -> m a) -> m (Chimera a) Source #
Create a stream from the unfixed monadic function.
Manipulation
mapWithKey :: (Unbox a, Unbox b) => (Word -> a -> b) -> Chimera a -> Chimera b Source #
Map over all indices and respective elements in the stream.
traverseWithKey :: forall m a b. (Monad m, Unbox a, Unbox b) => (Word -> a -> m b) -> Chimera a -> m (Chimera b) Source #
Traverse over all indices and respective elements in the stream.