convertArrayMP
  :: (Ix i, Num i, Ord a, Monad p1, Monad p2)
  => NumThreads
  -> ST2Array r w i a
  -> ConvertArrayType i a r w p1 p2 tc
convertArrayMP n xs oc cr =
  mkMultiPassMain
    (return ())
    (\() ->
     pmapST2ArrayMP cr n xs $ \x ->
       ordCons oc (return x))
    return
convertArrayMP
  :: (Ix i, Num i, Ord a, Monad p1, Monad p2)
  => NumThreads
  -> ST2Array r w i a
  -> ConvertArrayType i a r w p1 p2 tc
convertArrayMP n xs oc cr =
  mkMultiPassMain
    (return ())
    (\() ->
     pmapST2ArrayMP cr n xs $ \x ->
       ordCons oc (return x))
    return
convertArrayMP n xs oc cr =
  mkMultiPassMain
    (return ())
    (\() ->
     pmapST2ArrayMP cr n xs $ \x ->
       ordCons oc (return x))
    return