-- | -- Module : Data.Massiv.Core -- Copyright : (c) Alexey Kuleshevich 2018-2022 -- License : BSD3 -- Maintainer : Alexey Kuleshevich -- Stability : experimental -- Portability : non-portable module Data.Massiv.Core ( Array (LArray), List (..), Vector, MVector, Matrix, MMatrix, Load (iterArrayLinearST_, iterArrayLinearWithSetST_), Stream (..), Source, PrefIndex (..), Size, Shape (..), LengthHint (..), StrideLoad (..), Manifest, Mutable, Ragged, L (..), ListItem, Scheduler, SchedulerWS, Strategy, Comp (Seq, Par, Par', ParOn, ParN), getComp, setComp, appComp, WorkerStates, initWorkerStates, scheduleWork, scheduleWork_, module Data.Massiv.Core.Index, -- * Numeric FoldNumeric, Numeric, NumericFloat, -- * Exceptions MonadThrow (..), IndexException (..), SizeException (..), ShapeException (..), module Data.Massiv.Core.Exception, -- * Stateful Monads MonadUnliftIO, MonadIO (liftIO), PrimMonad (PrimState), ) where import Control.Scheduler (SchedulerWS, initWorkerStates) import Data.Massiv.Core.Common import Data.Massiv.Core.Exception import Data.Massiv.Core.Index import Data.Massiv.Core.List import Data.Massiv.Core.Operations (FoldNumeric, Numeric, NumericFloat) -- | Append computation strategy using `Comp`'s `Monoid` instance. -- -- @since 0.6.0 appComp :: Strategy r => Comp -> Array r ix e -> Array r ix e appComp comp arr = setComp (comp <> getComp arr) arr {-# INLINEABLE appComp #-}