qsort :: [Int] -> [Int]
qsort xs = runST $ do
    let len = length xs - 1
    arr <- newListArray (0, len) xs :: ST s (STArray s Int Int)
    qsortImpl arr 0 len >> getElems arr
qsort :: [Int] -> [Int]
qsort xs = runST $ do
    let len = length xs - 1
    arr <- newListArray (0, len) xs :: ST s (STArray s Int Int)
    qsortImpl arr 0 len >> getElems arr
qsort xs = runST $ do
    let len = length xs - 1
    arr <- newListArray (0, len) xs :: ST s (STArray s Int Int)
    qsortImpl arr 0 len >> getElems arr