packages feed

random-shuffle 0.0.3 → 0.0.4

raw patch · 2 files changed

+6/−4 lines, 2 filesnew-uploader

Files

random-shuffle.cabal view
@@ -1,7 +1,7 @@ cabal-version:    >= 1.6 build-type:       Simple name:             random-shuffle-version:          0.0.3+version:          0.0.4 license:          BSD3 license-file:     LICENSE category:         System
src/System/Random/Shuffle.hs view
@@ -16,7 +16,7 @@  import Data.Function (fix) import System.Random (RandomGen, randomR)-import Control.Monad (liftM2)+import Control.Monad (liftM,liftM2) import Control.Monad.Random (MonadRandom, getRandomR)  @@ -100,8 +100,10 @@  -- |shuffle' wrapped in a random monad shuffleM :: (MonadRandom m) => [a] -> m [a]-shuffleM elements = return . shuffle elements =<< rseqM (length elements - 1)+shuffleM elements+    | null elements = return []+    | otherwise     = liftM (shuffle elements) (rseqM (length elements - 1))   where     rseqM :: (MonadRandom m) => Int -> m [Int]     rseqM 0 = return []-    rseqM i = (:) `liftM2` getRandomR (0, i) $ rseqM (i - 1)+    rseqM i = liftM2 (:) (getRandomR (0, i)) (rseqM (i - 1))