-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Random shuffle implementation.
--   
--   Random shuffle implementation, on immutable lists. Based on `perfect
--   shuffle' implementation by Oleg Kiselyov, available on
--   http://okmij.org/ftp/Haskell/perfect-shuffle.txt
@package random-shuffle
@version 0.0.4

module System.Random.Shuffle

-- | Given a sequence (e1,...en) to shuffle, and a sequence (r1,...r[n-1])
--   of numbers such that r[i] is an independent sample from a uniform
--   random distribution [0..n-i], compute the corresponding permutation of
--   the input sequence.
shuffle :: [a] -> [Int] -> [a]

-- | Given a sequence (e1,...en) to shuffle, its length, and a random
--   generator, compute the corresponding permutation of the input
--   sequence.
shuffle' :: RandomGen gen => [a] -> Int -> gen -> [a]

-- | shuffle' wrapped in a random monad
shuffleM :: MonadRandom m => [a] -> m [a]
instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (System.Random.Shuffle.Tree a)
