{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE FlexibleContexts #-}
module Data.Massiv.Array.Mutable.Algorithms
( quicksortM_
, quicksortByM_
, 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)
=> MVector (PrimState m) r e
-> (e -> Bool)
-> m Ix1
unstablePartitionM :: MVector (PrimState m) r e -> (e -> Bool) -> m Ix1
unstablePartitionM MVector (PrimState m) r e
marr e -> Bool
f = MVector (PrimState m) r e -> (e -> Bool) -> Ix1 -> Ix1 -> m Ix1
forall r e (m :: * -> *).
(Mutable r Ix1 e, PrimMonad m) =>
MVector (PrimState m) r e -> (e -> Bool) -> Ix1 -> Ix1 -> m Ix1
unsafeUnstablePartitionRegionM MVector (PrimState m) r e
marr e -> Bool
f Ix1
0 (Sz Ix1 -> Ix1
forall ix. Sz ix -> ix
unSz (MVector (PrimState m) r e -> Sz Ix1
forall r ix e s. Mutable r ix e => MArray s r ix e -> Sz ix
msize MVector (PrimState m) r e
marr) Ix1 -> Ix1 -> Ix1
forall a. Num a => a -> a -> a
- Ix1
1)