Concurrent Haskell で遊ぶ
勉強してたら知恵熱がでそうになったので休憩。普通のクイックソートより遅くなる。(当たり前)
import Control.Concurrent import System.Random (randomRs, mkStdGen) main = do r <- newEmptyMVar sort r $ list 1000 takeMVar r >>= print list x = take x $ randomRs (0,100) (mkStdGen 0) sort m [] = putMVar m [] sort m (x:xs) = do let small = [a|a<-xs, a<x] let large = [a|a<-xs, a>=x] a <- newEmptyMVar b <- newEmptyMVar forkOS $ sort a small forkOS $ sort b large a' <- takeMVar a b' <- takeMVar b putMVar m $ a' ++ [x] ++ b'