@@ -0,0 +1,38 @@
4+{-# LANGUAGE FlexibleContexts #-}
8+import Data.List (sort)
9+import qualified Asyncly as A
12+ g <- A.liftIO getStdGen
13+ let ls = take 100000 (randoms g) :: [Word16]
14+ A.foldMapWith (A.<>) return (sort ls)
16+mergeAsync :: (Ord a, A.MonadAsync m)
17+ => A.AsyncT m a -> A.AsyncT m a -> A.AsyncT m a
19+ x <- A.lift $ A.async a
20+ y <- A.lift $ A.async b
24+ x <- A.lift $ A.next a
28+ y <- A.lift $ A.next b
30+ Nothing -> return va A.<> ma
33+ then (return vb) A.<> merge (return va A.<> ma) mb
34+ else (return va) A.<> merge ma (return vb A.<> mb)
37+ xs <- A.toList $ mergeAsync getSorted getSorted
38+ putStrLn $ show $ length xs