-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Extras for the "primitive" library -- -- Extras for the "primitive" library @package primitive-extras @version 0.3 module PrimitiveExtras.Pure -- | Get length of the outer dimension of a primitive multi array primMultiArrayOuterLength :: PrimMultiArray a -> Int oneHotPrimArray :: Prim a => Int -> Int -> a -> PrimArray a primArrayByteArray :: PrimArray a -> ByteArray primArrayPrimitiveVector :: Prim a => PrimArray a -> Vector a primArrayUnboxedVector :: Prim a => PrimArray a -> Vector a module PrimitiveExtras.Data data PrimMultiArray a data TVarArray a module PrimitiveExtras.IO generateUnliftedArray :: PrimUnlifted a => Int -> (Int -> IO a) -> IO (UnliftedArray a) replicateUnliftedArray :: PrimUnlifted a => Int -> IO a -> IO (UnliftedArray a) generateArray :: Int -> (Int -> IO a) -> IO (Array a) replicateArray :: Int -> IO a -> IO (Array a) generatePrimArray :: Prim a => Int -> (Int -> IO a) -> IO (PrimArray a) replicatePrimArray :: Prim a => Int -> IO a -> IO (PrimArray a) traversePrimArrayWithIndexInRange :: Prim a => PrimArray a -> Int -> Int -> (Int -> a -> IO ()) -> IO () newTVarArray :: a -> Int -> IO (TVarArray a) freezeTVarArrayAsPrimArray :: Prim a => TVarArray a -> IO (PrimArray a) modifyTVarArrayAt :: TVarArray a -> Int -> (a -> a) -> IO () module PrimitiveExtras.Fold -- | Given a size of the array, construct a fold, which produces an array -- of index counts. indexCounts :: (Integral count, Prim count) => Int -> Fold Int (PrimArray count) -- | This function is partial in the sense that it expects the index vector -- of produced elements to be within the specified amount. unliftedArray :: PrimUnlifted element => Int -> Fold (Int, element) (UnliftedArray element) -- | Having a priorly computed array of inner dimension sizes, e.g., using -- the indexCounts fold, construct a fold over indexed elements -- into a multi-array of elements. -- -- Thus it allows to construct it in two passes over the indexed -- elements. primMultiArray :: forall size element. (Integral size, Prim size, Prim element) => PrimArray size -> Fold (Int, element) (PrimMultiArray element) module PrimitiveExtras.UnfoldM primMultiArrayAssocs :: (Monad m, Prim a) => PrimMultiArray a -> UnfoldM m (Int, a) primMultiArrayIndices :: Monad m => PrimMultiArray a -> UnfoldM m Int primMultiArrayAt :: (Monad m, Prim prim) => PrimMultiArray prim -> Int -> UnfoldM m prim primArray :: (Monad m, Prim prim) => PrimArray prim -> UnfoldM m prim module PrimitiveExtras.Unfold primMultiArrayAssocs :: Prim a => PrimMultiArray a -> Unfold (Int, a) primMultiArrayIndices :: PrimMultiArray a -> Unfold Int primMultiArrayAt :: Prim prim => PrimMultiArray prim -> Int -> Unfold prim primArray :: Prim prim => PrimArray prim -> Unfold prim module PrimitiveExtras.Monad -- | Given a size of the outer array and a function, which executes a fold -- over indexed elements in a monad, constructs a prim multi-array primMultiArray :: (Monad m, Prim element) => Int -> (forall x. Fold (Int, element) x -> m x) -> m (PrimMultiArray element) replicateMMultiPrimArray :: (Monad m, Prim a) => Int -> m (PrimArray a) -> m (PrimMultiArray a) -- | Please notice that this function is highly untested replicateMPrimArray :: (Monad m, Prim element) => Int -> m element -> m (PrimArray element) traverseUnliftedArray_ :: (Monad m, PrimUnlifted a) => (a -> m ()) -> UnliftedArray a -> m () module PrimitiveExtras.Cereal.Put primArray :: Prim element => Putter element -> Putter (PrimArray element) primMultiArray :: Prim element => Putter element -> Putter (PrimMultiArray element) module PrimitiveExtras.Cereal.Get primArray :: Prim element => Get element -> Get (PrimArray element) primMultiArray :: Prim element => Get element -> Get (PrimMultiArray element)