HORIZON HASKELLDocslts/ghc-10.0.x8c2f8e82026-10-19Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8c2f8e8 · 2026-10-19

Modulemassiv-1.0.5.0Haskell2010

Data.Massiv.Vector.Stream

  • 4 types
  • 1 class
  • 95 values
  • Packagemassiv-1.0.5.0
  • Exports100
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceStream.hs

This module has a similar purpose as the Data.Vector.Fusion.Bundle.Monadic, but quite a bit simpler.

Important - This module is still experimental, as such it is considered internal and exported for the curious users only.

datadata Steps (m :: Type -> Type) e
#

Constructors

Instances6Functor, Foldable, IsList, Semigroup, Monoid, Item
  • Monad m => Functor (Steps m)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • Foldable (Steps Id)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • IsList (Steps Id e)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • Monad m => Semigroup (Steps m e)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • Monad m => Monoid (Steps m e)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • type Item (Steps Id e) = eDefined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
classclass Load r ix e => Stream r ix e where
#

Methods

Instances9Stream, …
  • Stream DS Ix1 eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Delayed.Stream
  • Stream L Ix1 eDefined in massiv-1.0.5.0 · Data.Massiv.Core.List
  • Index ix => Stream D ix eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Delayed.Pull
  • Index ix => Stream B ix eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Manifest.Boxed
  • Index ix => Stream BL ix eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Manifest.Boxed
  • (Index ix, NFData e) => Stream BN ix eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Manifest.Boxed
  • (Index ix, Storable e) => Stream S ix eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Manifest.Storable
  • (Index ix, Unbox e) => Stream U ix eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Manifest.Unboxed
  • (Prim e, Index ix) => Stream P ix eDefined in massiv-1.0.5.0 · Data.Massiv.Array.Manifest.Primitive

Conversion

12 declarations
valueconsume :: Monad m => Steps m a -> m ()
#

Operations on Steps

40 declarations
valuelength :: Monad m => Steps m a -> m Int
#
valueempty :: Monad m => Steps m e
#
valuesingleton :: Monad m => e -> Steps m e
#
valuegenerate :: Monad m => Sz1 -> (Int -> e) -> Steps m e
#
valueheadMaybe :: Monad m => Steps m a -> m (Maybe a)
#

First element of the Stream or error if empty

valuelast :: HasCallStack => [a] -> a
#

This is a partial function, it throws an error on empty lists. Use Data.List.unsnoc instead. Consider refactoring to use Data.List.NonEmpty.

\mathcal{O}(n). Extract the last element of a list, which must be finite and non-empty.

To disable the warning about partiality put {-# OPTIONS_GHC -Wno-x-partial -Wno-unrecognised-warning-flags #-} at the top of the file. To disable it throughout a package put the same options into ghc-options section of Cabal file. To disable it in GHCi put :set -Wno-x-partial -Wno-unrecognised-warning-flags into ~/.ghci config file. See also the migration guide.

Examples
Example1 expression
last [1, 2, 3]3
Example1 expression
last [1..]* Hangs forever *
Example1 expression
last []*** Exception: Prelude.last: empty list
valuecons :: Monad m => e -> Steps m e -> Steps m e
#
valueuncons :: Monad m => Steps m e -> m (Maybe (e, Steps m e))
#

First element of the Steps or Nothing if empty

valuesnoc :: Monad m => Steps m e -> e -> Steps m e
#
valuedrop :: Monad m => Sz1 -> Steps m a -> Steps m a
#
valuetake :: Monad m => Sz1 -> Steps m a -> Steps m a
#
valueslice :: Monad m => Int -> Sz1 -> Steps m a -> Steps m a
#
valueiterateN :: Monad m => Sz1 -> (a -> a) -> a -> Steps m a
#
valueiterateNM :: Monad m => Sz1 -> (a -> m a) -> a -> Steps m a
#
valuereplicate :: Monad m => Sz1 -> a -> Steps m a
#
valuereplicateM :: Monad m => Sz1 -> m a -> Steps m a
#
valuegenerateM :: Monad m => Sz1 -> (Int -> m a) -> Steps m a
#
valuemap :: Monad m => (e -> a) -> Steps m e -> Steps m a
#
valuemapM :: Monad m => (e -> m a) -> Steps m e -> Steps m a
#
valuemapM_ :: Monad m => (e -> m a) -> Steps m e -> m ()
#
valueindexed :: Monad m => Steps m e -> Steps m (Int, e)
#
valueconcatMap :: Monad m => (a -> Steps m e) -> Steps m a -> Steps m e
#
valueappend :: Monad m => Steps m e -> Steps m e -> Steps m e
#
valuezipWith :: Monad m => (a -> b -> e) -> Steps m a -> Steps m b -> Steps m e
#
valuezipWith3
  1. :: Monad m
  2. => a -> b -> c -> d
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
#
valuezipWith4
  1. :: Monad m
  2. => a -> b -> c -> d -> e
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
#
valuezipWith5
  1. :: Monad m
  2. => a -> b -> c -> d -> e -> f
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
  8. -> Steps m f
#
valuezipWith6
  1. :: Monad m
  2. => a -> b -> c -> d -> e -> f -> g
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
  8. -> Steps m f
  9. -> Steps m g
#
valuezipWithM
  1. :: Monad m
  2. => a -> b -> m c
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
#
valuezipWith3M
  1. :: Monad m
  2. => a -> b -> c -> m d
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
#
valuezipWith4M
  1. :: Monad m
  2. => a -> b -> c -> d -> m e
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
#
valuezipWith5M
  1. :: Monad m
  2. => a -> b -> c -> d -> e -> m f
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
  8. -> Steps m f
#
valuezipWith6M
  1. :: Monad m
  2. => a -> b -> c -> d -> e -> f -> m g
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
  8. -> Steps m f
  9. -> Steps m g
#
valuezipWithM_ :: Monad m => (a -> b -> m c) -> Steps m a -> Steps m b -> m ()
#
valuezipWith3M_
  1. :: Monad m
  2. => a -> b -> c -> m d
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> m ()
#
valuezipWith4M_
  1. :: Monad m
  2. => a -> b -> c -> d -> m e
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> m ()
#
valuezipWith5M_
  1. :: Monad m
  2. => a -> b -> c -> d -> e -> m f
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
  8. -> m ()
#
valuezipWith6M_
  1. :: Monad m
  2. => a -> b -> c -> d -> e -> f -> m g
  3. -> Steps m a
  4. -> Steps m b
  5. -> Steps m c
  6. -> Steps m d
  7. -> Steps m e
  8. -> Steps m f
  9. -> m ()
#

Folding

valuefoldl :: Monad m => (b -> a -> b) -> b -> Steps m a -> m b
#
valuefoldl1 :: Monad m => (a -> a -> a) -> Steps m a -> m a
#
valuefoldlM :: Monad m => (a -> b -> m a) -> a -> Steps m b -> m a
#
valuefoldl1M :: Monad m => (a -> a -> m a) -> Steps m a -> m a
#
valuefoldlLazy :: Monad m => (b -> a -> b) -> b -> Steps m a -> m b
#
valuefoldl1Lazy :: Monad m => (a -> a -> a) -> Steps m a -> m a
#
valuefoldlLazyM :: Monad m => (a -> b -> m a) -> a -> Steps m b -> m a
#
valuefoldl1LazyM :: Monad m => (a -> a -> m a) -> Steps m a -> m a
#
valuefoldrLazy :: Monad m => (a -> b -> b) -> b -> Steps m a -> m b
#
valuefoldr1Lazy :: Monad m => (a -> a -> a) -> Steps m a -> m a
#
valuefoldrLazyM :: Monad m => (b -> a -> m a) -> a -> Steps m b -> m a
#
valuefoldr1LazyM :: Monad m => (a -> a -> m a) -> Steps m a -> m a
#

Unfolding

valueunfoldr :: Monad m => (s -> Maybe (e, s)) -> s -> Steps m e
#
valueunfoldrN :: Monad m => Sz1 -> (s -> Maybe (e, s)) -> s -> Steps m e
#
valueunsafeUnfoldrN :: Monad m => Sz1 -> (s -> Maybe (e, s)) -> s -> Steps m e
#
valueunfoldrM :: Monad m => (s -> m (Maybe (e, s))) -> s -> Steps m e
#
valueunfoldrNM :: Monad m => Int -> (s -> m (Maybe (e, s))) -> s -> Steps m e
#
valueunsafeUnfoldrNM
  1. :: Monad m
  2. => Sz1
  3. -> s -> m (Maybe (e, s))
  4. -> s
  5. -> Steps m e
#
valueunfoldrExactN :: Monad m => Sz1 -> (s -> (a, s)) -> s -> Steps m a
#
valueunfoldrExactNM :: Monad m => Sz1 -> (s -> m (a, s)) -> s -> Steps m a
#

Scanning

valueprescanlM :: Monad m => (a -> b -> m a) -> a -> Steps m b -> Steps m a
#

Prefix scan with strict accumulator and a monadic operator

valuepostscanlM :: Monad m => (a -> b -> m a) -> a -> Steps m b -> Steps m a
#

Suffix scan with a monadic operator

valuepostscanlAccM
  1. :: Monad m
  2. => c -> b -> m (a, c)
  3. -> c
  4. -> Steps m b
  5. -> Steps m a
#

Suffix scan with a monadic operator

valuescanlM :: Monad m => (a -> b -> m a) -> a -> Steps m b -> Steps m a
#

Haskell-style scan with a monadic operator

valuescanl1M :: Monad m => (a -> a -> m a) -> Steps m a -> Steps m a
#

Initial-value free scan over a Stream with a strict accumulator and a monadic operator

Enumeration

valueenumFromStepN :: (Num a, Monad m) => a -> a -> Sz1 -> Steps m a
#

Lists

4 declarations
valuetoList :: Steps Id e -> [e]
#
valuefromList :: Monad m => [e] -> Steps m e
#
valuefromListN :: Monad m => Int -> [e] -> Steps m e
#
valueunsafeFromListN :: Monad m => Sz1 -> [e] -> Steps m e
#

Filter

valuemapMaybe :: Monad m => (a -> Maybe e) -> Steps m a -> Steps m e
#
valuemapMaybeM :: Monad m => (a -> m (Maybe b)) -> Steps m a -> Steps m b
#
valuefilter :: Monad m => (a -> Bool) -> Steps m a -> Steps m a
#
valuefilterM :: Monad m => (e -> m Bool) -> Steps m e -> Steps m e
#

Transformations

2 declarations
valuetransSteps :: (Monad m, Monad n) => Steps m e -> m (Steps n e)
#
valuetransStepsId :: Monad m => Steps Id e -> Steps m e
#

Useful re-exports

6 declarations
newtypenewtype Id a
#

Constructors

Instances10Monad, Functor, Applicative, Foldable, IsList, Eq1, …
  • Monad IdDefined in vector-0.13.2.0 · Data.Vector.Fusion.Util
  • Functor IdDefined in vector-0.13.2.0 · Data.Vector.Fusion.Util
  • Applicative IdDefined in vector-0.13.2.0 · Data.Vector.Fusion.Util
  • Foldable (Steps Id)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • IsList (Steps Id e)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • Eq1 (Bundle Id v)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Ord1 (Bundle Id v)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Eq a => Eq (Bundle Id v a)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Ord a => Ord (Bundle Id v a)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • type Item (Steps Id e) = eDefined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
datadata Box a
#

Box monad

Constructors

Instances3Monad, Functor, Applicative
  • Monad BoxDefined in vector-stream-0.1.0.1 · Data.Stream.Monadic
  • Functor BoxDefined in vector-stream-0.1.0.1 · Data.Stream.Monadic
  • Applicative BoxDefined in vector-stream-0.1.0.1 · Data.Stream.Monadic
newtypenewtype Id a
#

Constructors

Instances10Monad, Functor, Applicative, Foldable, IsList, Eq1, …
  • Monad IdDefined in vector-0.13.2.0 · Data.Vector.Fusion.Util
  • Functor IdDefined in vector-0.13.2.0 · Data.Vector.Fusion.Util
  • Applicative IdDefined in vector-0.13.2.0 · Data.Vector.Fusion.Util
  • Foldable (Steps Id)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • IsList (Steps Id e)Defined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan
  • Eq1 (Bundle Id v)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Ord1 (Bundle Id v)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Eq a => Eq (Bundle Id v a)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Ord a => Ord (Bundle Id v a)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • type Item (Steps Id e) = eDefined in massiv-1.0.5.0 · Data.Massiv.Vector.Stream · orphan

Orphan instances

5 instances