Safe Haskell | None |
---|---|
Language | GHC2021 |
AtCoder.Extra.Vector.Prim
Description
Monadic vector functions with PrimMonad m
constraints. They can fuse well.
Related issue: https://www.github.com/haskell/vector/issues/416.
Note that these functions are not 100% guaranteed to be sound.
Since: 1.5.2.0
Synopsis
- replicateM :: (PrimMonad m, Vector v a) => Int -> m a -> m (v a)
- generateM :: (PrimMonad m, Vector v a) => Int -> (Int -> m a) -> m (v a)
- iterateNM :: (PrimMonad m, Vector v a) => Int -> (a -> m a) -> a -> m (v a)
- constructNM :: (PrimMonad m, Vector v a) => Int -> (v a -> m a) -> m (v a)
- constructrNM :: (PrimMonad m, Vector v a) => Int -> (v a -> m a) -> m (v a)
- mapM :: (PrimMonad m, Vector v a, Vector v b) => (a -> m b) -> v a -> m (v b)
- mapM_ :: (PrimMonad m, Vector v a) => (a -> m b) -> v a -> m ()
- imapM :: (PrimMonad m, Vector v a, Vector v b) => (Int -> a -> m b) -> v a -> m (v b)
- imapM_ :: (PrimMonad m, Vector v a) => (Int -> a -> m b) -> v a -> m ()
- forM :: (PrimMonad m, Vector v a, Vector v b) => v a -> (a -> m b) -> m (v b)
- forM_ :: (PrimMonad m, Vector v a) => v a -> (a -> m b) -> m ()
- iforM :: (PrimMonad m, Vector v a, Vector v b) => v a -> (Int -> a -> m b) -> m (v b)
- iforM_ :: (PrimMonad m, Vector v a) => v a -> (Int -> a -> m b) -> m ()
- zipWithM :: (PrimMonad m, Vector v a, Vector v b, Vector v c) => (a -> b -> m c) -> v a -> v b -> m (v c)
- zipWithM_ :: (PrimMonad m, Vector v a, Vector v b) => (a -> b -> m c) -> v a -> v b -> m ()
- izipWithM :: (PrimMonad m, Vector v a, Vector v b, Vector v c) => (Int -> a -> b -> m c) -> v a -> v b -> m (v c)
- izipWithM_ :: (PrimMonad m, Vector v a, Vector v b) => (Int -> a -> b -> m c) -> v a -> v b -> m ()
- concatMapM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> m (v b)) -> v a -> m (v b)
- iconcatMapM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (Int -> a -> m (v b)) -> v a -> m (v b)
- filterM :: (PrimMonad m, Vector v a) => (a -> m Bool) -> v a -> m (v a)
- mapMaybeM :: (PrimMonad m, Vector v a, Vector v b) => (a -> m (Maybe b)) -> v a -> m (v b)
- imapMaybeM :: (PrimMonad m, Vector v a, Vector v b) => (Int -> a -> m (Maybe b)) -> v a -> m (v b)
- prescanlM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a)
- prescanlM' :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a)
- postscanlM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a)
- postscanlM' :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a)
- scanlM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a)
- scanlM' :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a)
- scanl1M :: (HasCallStack, PrimMonad m, Vector v a) => (a -> a -> m a) -> v a -> m (v a)
- scanl1M' :: (HasCallStack, PrimMonad m, Vector v a) => (a -> a -> m a) -> v a -> m (v a)
Construction
Monadic initialization
replicateM :: (PrimMonad m, Vector v a) => Int -> m a -> m (v a) Source #
Constraints
- \(n \ge 0\)
Since: 1.5.2.0
generateM :: (PrimMonad m, Vector v a) => Int -> (Int -> m a) -> m (v a) Source #
Constraints
- \(n \ge 0\)
Since: 1.5.2.0
iterateNM :: (PrimMonad m, Vector v a) => Int -> (a -> m a) -> a -> m (v a) Source #
Constraints
- \(n \ge 0\)
Since: 1.5.2.0
Unfolding
constructNM :: (PrimMonad m, Vector v a) => Int -> (v a -> m a) -> m (v a) Source #
Constraints
- \(n \ge 0\)
Since: 1.5.2.0
constructrNM :: (PrimMonad m, Vector v a) => Int -> (v a -> m a) -> m (v a) Source #
Constraints
- \(n \ge 0\)
Since: 1.5.2.0
Elementwise operations
Monadic mapping
mapM :: (PrimMonad m, Vector v a, Vector v b) => (a -> m b) -> v a -> m (v b) Source #
Since: 1.5.2.0
imapM :: (PrimMonad m, Vector v a, Vector v b) => (Int -> a -> m b) -> v a -> m (v b) Source #
Since: 1.5.2.0
forM :: (PrimMonad m, Vector v a, Vector v b) => v a -> (a -> m b) -> m (v b) Source #
Since: 1.5.2.0
iforM :: (PrimMonad m, Vector v a, Vector v b) => v a -> (Int -> a -> m b) -> m (v b) Source #
Since: 1.5.2.0
Monadic zipping
zipWithM :: (PrimMonad m, Vector v a, Vector v b, Vector v c) => (a -> b -> m c) -> v a -> v b -> m (v c) Source #
Since: 1.5.2.0
zipWithM_ :: (PrimMonad m, Vector v a, Vector v b) => (a -> b -> m c) -> v a -> v b -> m () Source #
Since: 1.5.2.0
izipWithM :: (PrimMonad m, Vector v a, Vector v b, Vector v c) => (Int -> a -> b -> m c) -> v a -> v b -> m (v c) Source #
Since: 1.5.2.0
izipWithM_ :: (PrimMonad m, Vector v a, Vector v b) => (Int -> a -> b -> m c) -> v a -> v b -> m () Source #
Since: 1.5.2.0
Concat map
concatMapM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> m (v b)) -> v a -> m (v b) Source #
Maps each element to a vector and concatenate the results.
Since: 1.5.2.0
iconcatMapM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (Int -> a -> m (v b)) -> v a -> m (v b) Source #
Maps each element to a vector and concatenate the results.
Since: 1.5.2.0
Working with predicates
Filtering
mapMaybeM :: (PrimMonad m, Vector v a, Vector v b) => (a -> m (Maybe b)) -> v a -> m (v b) Source #
Since: 1.5.2.0
imapMaybeM :: (PrimMonad m, Vector v a, Vector v b) => (Int -> a -> m (Maybe b)) -> v a -> m (v b) Source #
Since: 0.12.2.0
Monadic scanl
prescanlM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a) Source #
Since: 1.5.2.0
prescanlM' :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a) Source #
Since: 1.5.2.0
postscanlM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a) Source #
Since: 1.5.2.0
postscanlM' :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a) Source #
Since: 1.5.2.0
scanlM :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a) Source #
Since: 1.5.2.0
scanlM' :: (HasCallStack, PrimMonad m, Vector v a, Vector v b) => (a -> b -> m a) -> a -> v b -> m (v a) Source #
Since: 1.5.2.0
scanl1M :: (HasCallStack, PrimMonad m, Vector v a) => (a -> a -> m a) -> v a -> m (v a) Source #
Since: 1.5.2.0
scanl1M' :: (HasCallStack, PrimMonad m, Vector v a) => (a -> a -> m a) -> v a -> m (v a) Source #
Since: 1.5.2.0