fork(4) download
  1. import System.Random (randomRIO)
  2.  
  3. shuffle :: [a] -> IO [a]
  4. shuffle [] = return []
  5. shuffle xs = do rnd <- randomRIO (0,length xs - 1)
  6. let (ys,z:zs) = splitAt rnd xs
  7. shuffle zs >>= return . (z:)
  8.  
  9. main :: IO ()
  10. main = shuffle [1..10] >>= print
Success #stdin #stdout 0s 4984KB
stdin
Standard input is empty
stdout
[10]