packages feed

BitStringRandomMonad 0.2.0.2 → 1.0.0.1

raw patch · 2 files changed

+6/−5 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Crypto.RandomMonad: data RandomElementsListST s a
+ Crypto.RandomMonad: data RandomElementsListST a s
- Crypto.RandomMonad: getRandomElement :: Unbox a => (RandomElementsListST s a) -> RndST s a
+ Crypto.RandomMonad: getRandomElement :: (RandomElementsListST a s) -> RndST s a
- Crypto.RandomMonad: newRandomElementST :: Unbox a => [a] -> ST s (RandomElementsListST s a)
+ Crypto.RandomMonad: newRandomElementST :: Unbox a => [a] -> ST s (RandomElementsListST a s)
- Crypto.RandomMonad: randomElementsLength :: (Unbox a) => RandomElementsListST s a -> RndST s Int
+ Crypto.RandomMonad: randomElementsLength :: RandomElementsListST a s -> RndST s Int

Files

BitStringRandomMonad.cabal view
@@ -2,7 +2,7 @@ --  documentation, see http://haskell.org/cabal/users-guide/  name:                BitStringRandomMonad-version:             0.2.0.2+version:             1.0.0.1 description:         A library which turns a bytestring into a random monad.                      Input could be any PRNG which can output a lazy                      bytestring.
Crypto/RandomMonad.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE Trustworthy #-}+{-# LANGUAGE GADTs #-}  module Crypto.RandomMonad (RndT, RndST, RndIO, Rnd, RndState, getRandomM, getRandom2M, runRndT, newRandomElementST, getRandomElement, randomElementsLength, replaceSeedM, addSeedM, getRandomByteStringM, RandomElementsListST, RndStateList(..), BitStringToRandomExceptions(..)) where @@ -22,7 +23,7 @@ import qualified Data.Vector.Unboxed.Mutable as VM  data BitStringToRandomExceptions = OutOfElementsException deriving (Show, Typeable)-data RandomElementsListST s a = RandomElementsListST (STRef s (V.Vector a))+data RandomElementsListST a s = VM.Unbox a => RandomElementsListST (STRef s (V.Vector a)) instance Exception BitStringToRandomExceptions  bitsNeeded :: Integer -> Integer@@ -79,10 +80,10 @@ getRandomByteString 0 x = (ByS.pack [], x) getRandomByteString len x = let (byte, newState) = getRandom 255 x ; (allBytes, lastState) = getRandomByteString (len - 1) newState in (ByS.cons (fromIntegral byte) allBytes, lastState) -newRandomElementST :: VM.Unbox a => [a] -> ST s (RandomElementsListST s a)+newRandomElementST :: VM.Unbox a => [a] -> ST s (RandomElementsListST a s) newRandomElementST acc = (newSTRef $ V.fromList acc) >>= \ref -> return $ RandomElementsListST ref -getRandomElement :: VM.Unbox a => (RandomElementsListST s a) -> RndST s a+getRandomElement :: (RandomElementsListST a s) -> RndST s a getRandomElement (RandomElementsListST ref) = do   vec <- lift $ readSTRef ref   vec' <- lift $ V.unsafeThaw vec@@ -97,7 +98,7 @@   lift $ writeSTRef ref $ V.unsafeTail vec''   return ab -randomElementsLength :: (VM.Unbox a) => RandomElementsListST s a -> RndST s Int+randomElementsLength :: RandomElementsListST a s -> RndST s Int randomElementsLength (RandomElementsListST ref) = do   vec <- lift $ readSTRef ref   return $ V.length vec