on master help sign in
Added 'srand' to Effect.Random
commitd8fffa2ca9908aef6b2ca853988e1454d7c160a3 authorEdwin Brady <ecb10@st-andrews.ac.uk> dateSun 20 Oct 2013, 21:48 (13 years ago) parent8fc6d12
1 file changed+4
effects/Effect/Random.idr+4
effects/Effect/Random.idr+4
@@ -4,12 +4,14 @@ import Effects
44
55data Random : Type -> Type -> Type -> Type where
66 getRandom : Random Integer Integer Integer
7+ setSeed : Integer -> Random Integer Integer ()
78
89using (m : Type -> Type)
910 instance Handler Random m where
1011 handle seed getRandom k
1112 = let seed' = (1664525 * seed + 1013904223) `prim__sremBigInt` (pow 2 32) in
1213 k seed' seed'
14+ handle seed (setSeed n) k = k n ()
1315
1416RND : EFFECT
1517RND = MkEff Integer Random
@@ -18,4 +20,6 @@ rndInt : Integer -> Integer -> Eff m [RND] Integer
1820rndInt lower upper = do v <- getRandom
1921 return (v `prim__sremBigInt` (upper - lower) + lower)
2022
23+srand : Integer -> Eff m [RND] ()
24+srand n = setSeed n
2125