| Copyright | (c) Alexey Kuleshevich 2019 |
|---|---|
| License | BSD3 |
| Maintainer | Alexey Kuleshevich <lehins@yandex.ru> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Massiv.Array.Mutable.Algorithms
Description
Synopsis
- quicksortM_ :: (Ord e, Mutable r Ix1 e, PrimMonad m) => Scheduler m () -> MArray (PrimState m) r Ix1 e -> m ()
- unstablePartitionM :: forall r e m. (Mutable r Ix1 e, PrimMonad m) => MArray (PrimState m) r Ix1 e -> (e -> Bool) -> m Ix1
- iterateUntilM :: (Load r' ix e, Mutable r ix e, PrimMonad m, MonadIO m, PrimState m ~ RealWorld) => (Int -> Array r ix e -> MArray (PrimState m) r ix e -> m Bool) -> (Int -> Array r ix e -> Array r' ix e) -> Array r ix e -> m (Array r ix e)
Documentation
quicksortM_ :: (Ord e, Mutable r Ix1 e, PrimMonad m) => Scheduler m () -> MArray (PrimState m) r Ix1 e -> m () Source #
Mutable version of quicksort
Since: 0.3.2
Arguments
| :: (Mutable r Ix1 e, PrimMonad m) | |
| => MArray (PrimState m) r Ix1 e | |
| -> (e -> Bool) | Predicate |
| -> m Ix1 |
Partition elements of the supplied mutable vector according to the predicate.
Example
>>>import Data.Massiv.Array as A>>>import Data.Massiv.Array.Mutable.Algorithms>>>m <- thaw ([2,1,50,10,20,8] :: Array P Ix1 Int)>>>unstablePartitionM m (<= 10)4>>>freeze Seq mArray P Seq (Sz1 6) [ 2, 1, 8, 10, 20, 50 ]
Since: 0.3.2
Arguments
| :: (Load r' ix e, Mutable r ix e, PrimMonad m, MonadIO m, PrimState m ~ RealWorld) | |
| => (Int -> Array r ix e -> MArray (PrimState m) r ix e -> m Bool) | Convergence condition. Accepts current iteration counter, pure array at previous state and a mutable at the current state, therefore after each iteration its contents can be modifed if necessary. |
| -> (Int -> Array r ix e -> Array r' ix e) | A modifying function to apply at each iteration. The size of resulting array may differ if necessary. |
| -> Array r ix e | Initial source array |
| -> m (Array r ix e) |
Monadic version of iterateUntil where at each iteration mutable version of an array
is available.
Since: 0.3.6