{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE FlexibleContexts #-}
module Data.Massiv.Array.Mutable.Algorithms
( quicksortM_
, unstablePartitionM
, iterateUntilM
) where
import Data.Massiv.Array.Ops.Sort
import Data.Massiv.Array.Manifest.Internal (iterateUntilM)
import Data.Massiv.Core.Common
unstablePartitionM ::
forall r e m. (Mutable r Ix1 e, PrimMonad m)
=> MArray (PrimState m) r Ix1 e
-> (e -> Bool)
-> m Ix1
unstablePartitionM :: MArray (PrimState m) r Ix1 e -> (e -> Bool) -> m Ix1
unstablePartitionM MArray (PrimState m) r Ix1 e
marr e -> Bool
f = MArray (PrimState m) r Ix1 e -> (e -> Bool) -> Ix1 -> Ix1 -> m Ix1
forall r e (m :: * -> *).
(Mutable r Ix1 e, PrimMonad m) =>
MArray (PrimState m) r Ix1 e -> (e -> Bool) -> Ix1 -> Ix1 -> m Ix1
unsafeUnstablePartitionRegionM MArray (PrimState m) r Ix1 e
marr e -> Bool
f Ix1
0 (Sz Ix1 -> Ix1
forall ix. Sz ix -> ix
unSz (MArray (PrimState m) r Ix1 e -> Sz Ix1
forall r ix e s. Mutable r ix e => MArray s r ix e -> Sz ix
msize MArray (PrimState m) r Ix1 e
marr) Ix1 -> Ix1 -> Ix1
forall a. Num a => a -> a -> a
- Ix1
1)