import Control.Monad.ST import Data.Array.ST import Data.Array.MArray type Array s a = STArray s Int a pivot :: (Int, Int) -> Array s a -> ST s Int pivot (l,r) xs = do p <- readArray xs l za qsort :: Ord a => [a] -> [a] qsort input = runST $ do xs <- makearray (1, length input) input getElems xs where makearray :: (Int, Int) -> [a] -> ST s (STArray s Int a) makearray = newListArray